2010-09-23 6 views
0

J'ai une liste non ordonnée dans un objet:Comment utiliser les sélecteurs jQuery avec un objet?

var myUL = $('ul#theID'); //I send this var to another function in the code 

Je veux que les enfants directs que de cet objet (j'ai une autre « ul » dans chaque « li » qui a aussi « Li dedans), mais sélecteur ne fonctionne pas:

$(myUL + '>li').each(etc, etc... 

Il me donne l'erreur "exception uncaught: erreur de syntaxe, expression non reconnue: [object Object]" sur ce sélecteur Firebug. Si j'utilise $('li', myUL), il me donne TOUT le li avec le ul, pas seulement les enfants directs, ce qui n'est pas ce que je veux. Je ne veux que les enfants directs.

Quelle est la syntaxe correcte?

Répondre

3

Essayez

var li_children = myUL.children('li'); 

(correctement, un <ul> ne peut avoir <li> enfants de toute façon.)

1
$('>li', myUl) 

Cela devrait être suffisant?

+1

Cela fonctionnera probablement mais il est à noter que M. Resig (et d'autres) désapprouvent l'utilisation de l'argument de contexte, préférant '.find()'. – Pointy

+0

Je préfère '.find()' moi-même, en fait parce que je n'ai pas besoin de revenir si j'ai déjà tapé 'myUl'. Les gens essaient généralement d'être plus succincts dans leurs réponses, et c'est probablement la raison pour laquelle je l'ai fait ... sinon quelqu'un aurait dit «vous pouvez utiliser un contexte». –

+0

Je ne pense pas que vous êtes une mauvaise personne pour l'utiliser, je le signale simplement parce que c'est officiel Dogma :-) – Pointy

1
var myUL = Jquery('ul#theID'); 
jQuery('>li', myUL); 


jQuery selector works this way 
jQuery(selector, context); 
0

Vous ne devez pas utiliser le nom de la balise au début d'un sélecteur qui se termine par une carte d'identité . ID seul est le sélecteur le plus rapide. L'utilisation d'une méthode directe pour les enfants sera plus rapide qu'un sélecteur. En outre ne pas ajouter dans un sélecteur à la méthode .children() permettra jQuery de sauter l'étape de filtrage qui ne devrait pas être nécessaire que vous devriez avoir tous «li enfants quel que soit:

var $myUls = $("#theID").children(); 

Cheers, awirick