2010-06-20 9 views
1

Sérieusement LeVraiment, jQuery très simple qui ne fonctionne pas :(

<script type="text/javascript"> 
$(document).ready(function(){ 

$('.codeswitcher').click(function() { 
     alert("You clicked it"); 
}); 

}); 
</script> 

le code jQuery simple jamais simplement ne fonctionne pas Et puis, dans ma structure de page, j'ai ceci:

<div class="codeswitcher"> 
<img src="http://mysite.com/images/codeswitcher.png" alt="codeswitcher"> 
</div> 

il est juste une 32x32px image. et vous pouvez cliquer dessus. mais rien ne se passe! :(J'ai aussi changé mon sélecteur jQuery pour .codeswitcher img et div.codeswitcher, mais toujours rien.

J'ai d'autres jQuer y code fonctionne également sur la page très bien. Qu'est-ce qui ne va pas?

Merci!

Jack

+0

vérifier pour tous les conflits jquery! –

Répondre

2

D'abord, vous n'êtes pas fou, votre exemple de code fonctionne: http://jsfiddle.net/c3e6X/

Vérifiez si vous avez une erreur JavaScript avant que ce code fonctionne, il suffit d'ouvrir la console et regarder.

S'il est créé dynamiquement, par ex. AJAX alors vous devriez utiliser .live() à la place, comme ceci:

$(function() { 
    $('.codeswitcher').live('click', function() { 
    alert("You clicked it"); 
    }); 
}); 
+0

jsfiddle ressemble à un site soigné! Merci d'avoir confirmé, d'ailleurs. Et le problème est qu'il a été généré par Ajax. Merci de m'avoir fait savoir, je ne savais pas que vous deviez le sélectionner différemment dans une telle situation! – Jack

+0

Impossible d'accepter votre réponse pour encore 9 minutes si ... mais, merci :) – Jack

+0

@Jack - Le sélecteur fonctionne ** à ce moment **, et attache un gestionnaire de clic sur les éléments qu'il a trouvé ... ce n'était pas là pour trouver :) pour un peu plus d'explications: '.live()' écoute pour que l'événement passe à 'document' ... puisque les éléments nouveaux et anciens gèlent les événements de la même manière, Peu importe quand ils ont été ajoutés. –

Questions connexes