2010-05-29 5 views

Répondre

2

est ici une autre alternative:

$('li ul').closest('li') 

Ceci est susceptible d'être un peu juste plus rapide que :has sur les navigateurs modernes, car il utilisera la méthode querySelectorAll native sur le sélecteur principal. :has ne peut pas utiliser le support natif car ce n'est pas un sélecteur CSS standard mais une extension jQuery.

+0

bon à savoir. Merci. – Travis

+0

J'ai essayé ceci par rapport à '$ ('li: has (ul)');' dans Chrome et FF et ce dernier était environ ~ 30% plus rapide. Je pense que c'est moins efficace qu'il n'y paraît en surface. Que le moteur de sélection natif soit utilisé ou non, le sélecteur est toujours analysé en sens inverse (AFAIK) ... Ainsi, tous les éléments ul sont obtenus, puis la chaîne ancêtre de chaque personne est vérifiée pour un élément li. Puis ... chaque 'ul' conforme est soumis à la même routine avec' nearest() '... – James

+0

Donc, pour résumer,' li ul' est rapide ... mais seulement si vous voulez réellement le 'ul' éléments. L'appel à 'nearest()' rend cette solution moins efficace que l'utilisation de ': has'. – James

Questions connexes