pouziti snippetu + nasledne vyuziti js

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
14113
Člen | 33
+
0
-

Ahoj,
rekneme ze mam par tabu na jedne strance a kdyz kliknu na jeden z nich tak se snippetem vykresli. Mam problem v tom ze pokud chci pouzivat jquery k praci s vykreslenym elementem tak nefunguje. Jedine jak mi to jde je ze zabalim i js do snippet a prekleslim i ten.
Muzu se zeptat jestli neni i jina cesta?
priklad

sablona

<?php
{snippet table}
<div id="zkouska">ahoj</div>
{snippet}

<script>
$("#zkouska").click(function (){ hide();});
</script>
?>

Editoval 14113 (12. 7. 2010 18:48)

despiq
Člen | 320
+
0
-

js kod muzes jeste umistit do nette.jquery.js po naloadovani snippetu ale co ja vim tak jinak to nevyresis, ale nekdo muze urcite vedet vic nez ja …

Lopata
Člen | 139
+
0
-

V době kdy na #zkouska navěšuješ handler pomocí metody $.click, element ještě neexistuje (načte se až pak v tom tabu). Místo click použij metodu live , která to vypočítává dynamicky.

14113
Člen | 33
+
0
-

Dik za radu, mas pravdu

14113
Člen | 33
+
0
-

Jeste dotaz, kdyz napisu:

<script>
$("#zkouska").live("click",function(event){
	event.preventDefault();
	return FALSE;
});
</script>

tak mi stejne po kliknuti odkaz probehne i kdyz mam return FALSE. Nevite co s tim?
Pri $(„#zkouska“).click(function())… to funguje

Editoval 14113 (12. 7. 2010 21:49)

Lopata
Člen | 139
+
0
-

To je divné. Jelikož je ale javascript case sensitive, platí:

<script>
false != FALSE;
</script>

atd. (Neptej se proč, taky mi to přijde divné…). Prostě logická hodnota může být jen false nebo true;
Tohle ti vyhodí FALSE is undefined, považuje to že FALSE bude nějaká proměnná. Dej prostě return false; (lowercase) a mohlo (mělo!) by to fungovat.

14113
Člen | 33
+
0
-

Omlouvam se, to je preklep. Nejde to ani kdyz napisu false

Lopata
Člen | 139
+
0
-

Hlásí něco Firebug?

14113
Člen | 33
+
0
-

ne. Je zvlastni ze s tim .click to ale jde.

Zkousel jsem i jinou v. jquery, nic.

Editoval 14113 (12. 7. 2010 22:00)

Lopata
Člen | 139
+
0
-

Jo, to id zkouška tam doufám nemáte…? Duplicitní id může dělat neplechu. Kdyžtak zkuste .class.

14113
Člen | 33
+
0
-

Ne nemam. Mam class

Cifro
Člen | 245
+
0
-

Akurát dnes som o tom čítal. V tvojom kóde sa mi nepozdáva to preventDefault() a return false.

So in other words (http://css-tricks.com/…ent-default/):

function() {
  return false;
}

// IS EQUAL TO

function(e) {
  e.preventDefault();
  e.stopPropagation();
}

Edit: Jeden komentár pod tým člankom to vysvetľuje viac:

If there is javacsript error in page, using return false browser will perform default action. That can be avoid using preventDefault()
Example:

$('a').click( function(e){
   $(this).css("background", "green");
   err();  // err is not defined, so javascript will throw error, and browser will ignore rest of the code (return false). Browser will perform default action.
   return false;
});
$('a').click( function(e){
   e.preventDefault();
   $(this).css("background", "green");
   err();  // err is not defined, so javascript will throw error, and browser will ignore rest of the code. We already called preventDefault() so browser will not perform default action.
});

Editoval Cifro (12. 7. 2010 23:00)

Lopata
Člen | 139
+
0
-

Cifro napsal(a):

Díky za odkaz, pěkné :)