2010-01-30 3 views
0

simplifié, j'ai le code suivant:tous les enfants sélecteur dans jquery?

<a id="123" href="#"><span>click</span><span>me</span></a> 

lorsque je clique sur « clic » et « moi » il ne semble pas travailler avec la suite sélecteur jquery:

$("a").click... 

peut-être son parce que je cliquez sur les enfants? comment pourrais-je écrire le sélecteur afin qu'il soit mappé à tous les enfants de 'a'?

+0

Le code que vous avez là devrait fonctionner Avez-vous un lien vers votre page? – PetersenDidIt

+0

Ça devrait marcher. Pouvez-vous poster le code? http://jsbin.com/ekedo3 – Kobi

+0

En effet, cela fonctionne très bien! –

Répondre

5

[mis à jour]
Le problème est que vous utilisez le mauvais outil pour le travail (à savoir la propriété event.target). Cela retournera l'élément que l'événement s'est produit sur .. mais pas l'élément dans la phase bouillonnante qui gère l'événement ... vous devez utiliser le event.currentTarget .. Mais dans le cas de jQuery c'est aussi le même que le this mot-clé dans le gestionnaire ...
ref: http://api.jquery.com/event.currentTarget/

avoir une lecture au Event order comme expliqué à quirksmode. Une attention particulière à Use of event bubbling et currentTarget


[réponse précédente]
Assurez-vous que dans la méthode .click vous utilisez un pointeur de fonction ou une fonction anonyme ..

si

$("a").click(function() {/*...*/}); // anonymous function 

ou

function some_function() 
{ 
//... 
} 
$("a").click (some_function) // function pointer 

mais pas

$("a").click (some_function()) // unless some_function returns a function pointer.. 
+1

+1, bien que je ne pense pas que le terme" pointeur de fonction "s'applique vraiment dans un langage où les fonctions sont de première classe citoyens ... – Skilldrick

+0

très vrai .. ne sais pas comment reformuler si, pour le rendre facile à comprendre .. –

2

Si vous avez besoin pour obtenir l'identifiant d'un élément parent alors vous venez de faire ceci:

$('a').children().click(function() { 
    var parentId = $(this).parent('a').attr('id'); 
    // Code goes here 
}); 
2

je dois chercher l'id du parent . comment pourrais-je faire ça? Im actuellement en utilisant event.target.id

$(event.target).closest('a').attr('id') le feraient.

Mais il n'y a pas besoin d'utiliser event.target: dans une fonction de gestionnaire d'événements de la variable this spéciale pointera vers l'élément que vous avez ajouté le gestionnaire, plutôt que l'élément descendant qui a été cliqué:

$('a').click(function() { 
    alert('id= '+this.id) 
}); 

(Ou $(this).attr('id') si vous voulez forcer jQuery à effectuer un travail supplémentaire.)

PS. N'utilisez pas d'ID commençant par un nombre. C'est invalide et peut confondre certains navigateurs.

Questions connexes