2010-06-14 12 views
16

Ich möchte ein Element nach Klassennamen suchen. Ich weiß, dass es in einem bestimmten Elternteil div erscheint, also suche ich nicht das gesamte dom, sondern nur das bestimmte div. Ich probiere das, aber scheint nicht die richtige Syntax zu sein:Suchen Sie ein Element nach Klassennamen, von einem bekannten Elternelement

var element = $("#parentDiv").(".myClassNameOfInterest"); 

was ist der richtige Weg, das zu tun?

Dank

Antwort

36

Sie waren in der Nähe. Sie tun können:

var element = $("#parentDiv").find(".myClassNameOfInterest"); 

Alternativ können Sie tun:

var element = $(".myClassNameOfInterest", "#parentDiv"); 

... die dem #parentDiv den Kontext des jQuery-Objekt setzt.

EDIT:

Darüber hinaus kann es in einigen Browsern schneller, wenn Sie tun div.myClassNameOfInterest statt nur .myClassNameOfInterest.

+0

Die zweite Methode wird tatsächlich von jQuery in die erste Methode konvertiert die Szenen. Die erste Methode ist der empfohlene Weg, dies zu tun. Sie sind auch in Bezug auf das div-adding korrekt, das jQuery anweist, nur divs für den Klassennamen anstelle aller Elemente zu überprüfen. –

+0

@Mike - Ich habe gehört, dass neulich über jQuery das 2. Beispiel in das 1. Beispiel konvertiert, also habe ich mir kurz die Quelle angeschaut. Sicher schien es so. Danke für die Bestätigung. : o) – user113716

+0

Gute Punkte für schnellere und langsamere Aspekte der Funktion. – divinedragon

2
var element = $("#parentDiv .myClassNameOfInterest") 
+2

Ich denke, das kann tatsächlich langsamer sein. Ich glaube nicht, dass dies den Kontext der Suche auf das '# parentDiv' reduziert. Ich bin mir ziemlich sicher, dass es immer noch das DOM nach der Klasse durchsucht, und wenn es einen findet, prüft es, ob es ein Nachkomme von '# parentDiv' ist. – user113716

+0

@patrick, Sie sind richtig. Wie in Ihrem Beispiel bietet das Angeben des optionalen Kontextparameters mit einem ID-Selektor die beste Leistung ... '$ (". MyClassNameOfInterest "," #parentDiv ");' –

Verwandte Themen