2010-05-17 4 views
0

Existe-t-il une restriction sur la complexité des sélecteurs pouvant être utilisés avec un délégué dans jQuery 1.4.2?Sélecteurs complexes avec jQuery Delegate

Cela fonctionne pour moi:

$('.activeTabsList').delegate('.activeTabsListItem', 'click', 
function() { 
    alert('here'); 
}); 

Cela ne fonctionne pas:

$('.activeTabsList').delegate('.activeTabsListItem:not(.selected)', 'click', 
function() { 
    alert('here'); 
}); 

Comme vous pouvez le supposer sans doute, il n'y a qu'un 1 point à un moment qui a la classe sélectionnée. Lorsque je clique sur les autres onglets, mon gestionnaire de délégué n'est toujours pas viré.

Répondre

3

Le code que vous avez fonctionne, you can see a demo here. Assurez-vous que votre sélecteur correspond comme vous le pensez, c'est probablement le problème ... .delegate() lui-même gère ce cas.

Cela se produit généralement à la suite de quelque chose comme ça, sur-attribution de la classe selected:

$(".activeTabsListItem").click(function() { 
    $(".activeTabsListItem").addClass("selected"); //should have been $(this) 
}); 
+0

Merci - tout en vous assurant que je ne cherche pas à faire quelque chose non pris en charge avant que j'essaie vraiment de se pencher sur ce Plus profond. Aucune des démos ne couvre autre chose que de simples sélecteurs. Je n'ai jamais vu jsFiddle, mais c'est un très joli outil –

+0

+1 pour la réponse .... si je pouvais en donner un autre pour le lien vers jsFiddle, je le ferais ... bel outil! –

+0

Mon problème a fini par être parce que je l'utilise avec les onglets de l'interface utilisateur. Cela se déclenche d'abord pour que mon onglet soit toujours sélectionné au moment où mon événement se déclenche. –