Voeg les toe aan ouders met kinderen die jQuery gebruiken

Hoe kan ik een klasse toevoegen aan de ouder li die kinderen heeft?


2
Elke soort kinderen?
toegevoegd de auteur Abe Miessler, de bron
De html is misvormd als de hel
toegevoegd de auteur Esailija, de bron

2 antwoord

$('li > *').parent().addClass(...);

of

$('li').has('*').addClass(...);

De eerste versie kan iets sneller zijn als u:

$('li > :first-child').parent().addClass(...);

... moeilijk te zeggen zonder te testen.

All of these use fully valid CSS selectofs.

5
toegevoegd
jsperf.com/jquery-has-vs - Het lijkt erop alsof $ ('li > * '). parent (). addClass (...); is de snelste manier om een ​​antwoord op deze vraag te vinden.
toegevoegd de auteur Jasper, de bron
@Jasper: Bedankt voor de test. Ja, de native selectors zijn meestal moeilijk te verslaan. Ik ben een beetje verbaasd dat .has ('*') zo traag was.
toegevoegd de auteur RightSaidFred, de bron
$('li:has(ul)').addClass('test-class');

Ik hou ervan hoe eenvoudig jQuery sommige dingen maakt.

Here is jsfiddle of the above code: http://jsfiddle.net/p9M73/

Here is the documentation for :has(): http://api.jquery.com/has-selector/

2
toegevoegd
+1 erg elegant!
toegevoegd de auteur ComputerSaysNo, de bron
@IrvBriscoe Graag gedaan, ik heb een jsperf ingesteld om de prestaties van de antwoorden op deze pagina te tonen: jsperf. com/jquery-heeft-vs
toegevoegd de auteur Jasper, de bron
Heel erg bedankt voor de snelle reactie :)
toegevoegd de auteur Irv Briscoe, de bron