Wie soll ich unten die Elemente auswählen, die die Klasse my_class
innerhalb des Elements enthalten id = "my_id"
?
Beachten Sie, dass das Element möglicherweise auch eine andere Klasse hat, für die ich nicht auswähle.
<div id = "my_id">
<span class = "my_class hidden">hi</span>
<span class = "my_class">hello</span>
</div>
hat versucht
$("#my_id [class*=my_class ]")
$("#my_id .my_class:first")
Verwenden Sie einfach den einfachen alten Klassenwähler.
Es spielt keine Rolle, ob das Element auch andere Klassen hat. Es hat die Klasse .my_class und befindet sich irgendwo in #my_id , sodass es mit diesem Selektor übereinstimmt.
In Bezug auf die Leistung
Laut der Leistungsdokumentation zum jQuery-Selektor ist es schneller, die beiden Selektoren wie folgt getrennt zu verwenden:
Hier ist der relevante Teil der Dokumentation:
Die Auswahl nach ID oder Klasse allein (unter anderem) ruft vom Browser bereitgestellte Funktionen auf,
document.getElementById()
die recht schnell sind, während die Verwendung eines absteigenden Selektors die Sizzle-Engine wie erwähnt aufruft, die zwar schnell, aber langsamer als die vorgeschlagene Alternative ist.quelle
Verwenden Sie immer
anstatt
Schauen Sie sich die JQuery-Leistungsregeln an .
Auch bei Jquery Doc
quelle
Ich denke, Sie bitten darum, nur
<span class = "my_class">hello</span>
dieses Element auszuwählen . Sie haben dies getan. Wenn ich Ihre Frage richtig verstehe, ist dies die Antwort.DEMO
quelle
$("#my_id .my_class")
ist das kürzere Äquivalent; In diesem Fall erhalten Sie nichts, wenn Sie die Attributauswahl verwenden.Auch
$( "#container" ).find( "div.robotarm" );
ist gleich:
$( "div.robotarm", "#container" )
quelle