2009-11-23 7 views
3

D'accord, je ne peux pas comprendre ce que je fais mal ici ...jQuery sélecteur ne fonctionne pas correctement

Prenez le sélecteur jQuery suivant ...

$('tr[batchid]:has(span.chkselb input:checked) span[id=assetcount]') 

Cela renvoie 2 éléments. Pourtant, si je fais le sélecteur suivant:

$('tr[batchid]:has(span.chkselb input:checked) span#assetcount') 

Cela renvoie 0 éléments. Ces deux sélecteurs ne sont-ils pas identiques à tous égards?
Ou y a-t-il une interaction étrange avec l'opérateur ": has" ou quelque chose? Je l'ai eu en travaillant avec la première déclaration, mais je suis vraiment curieux de savoir pourquoi le second (mon sélecteur d'origine) ne fonctionne pas. Des idées?

Répondre

6

$('tr[batchid]:has(span.chkselb input:checked) span[id=assetcount]') ne doit pas renvoyer deux éléments, car les ID doivent être uniques. Cela me suggère que vous réutilisez des ID, et je suppose que le premier que vous utilisez ne correspond pas à tr[batchid]:has(span.chkselb input:checked), donc le second sélecteur ne retourne aucune ligne.

Vous devez rendre les ID uniques.

+0

Bon appel ...... – bdukes

+0

Donc je suppose que cela doit être quelque chose dans la façon dont jQuery vérifie un sélecteur d'identifiant (#) par rapport à la façon dont il vérifie un attribut (sélecteur []), oui? J'utilisais l'attribut id pour identifier un segment dans les lignes d'un contrôle DataGrid (lié par programmation). Au lieu de cela, ce que j'ai fait est changé en "fieldid =" et ajusté mon sélecteur en conséquence. Merci d'avance! – eidylon

Questions connexes