jQuery: Prüfen, ob div mit der Klasse "name" existiert
Mithilfe von jQuery-ich bin programmgesteuert generieren eine Reihe von div
's so:
<div class="mydivclass" id="myid1">Some Text1</div>
<div class="mydivclass" id="myid2">Some Text2</div>
Woanders in meinem code brauche ich, um zu erkennen, ob diese DIVs vorhanden sind. Der name der Klasse für die divs die gleiche, aber die ID ändert sich für jede div. Keine Ahnung, wie zu erkennen, diese mithilfe von jQuery?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vereinfachen Sie dies durch Aktivierung des ersten Objekts, das zurückgegeben wird JQuery so:
In diesem Fall, wenn ein truthy-Wert bei der ersten (
[0]
) index, übernehmen dann die Klasse existiert.Bearbeiten 04/10/2013: ich habe ein jsperf-test-Fall hier.
:first
es helfen würde, die Leistung (weiß nicht, ob sich die Leistung ist ein wichtiges Kriterium für @itgorilla), aber ob es funktioniert, variiert Wild vom browser, vermutlich, weil es ändert sich den nativen Funktionen von jQuery nutzen können, um die Auswahl. Hier ist ein test-Fall, wo das div existiert und hier ist eine, wo es nicht existiert.if (!$(".mydivclass")[0]){ /* do stuff */ }
Können Sie
size()
, aber jQuery empfiehlt, die Sie verwenden Länge, den overhead zu vermeiden, der einen anderen Aufruf der Funktion:Also:
http://api.jquery.com/size/
http://api.jquery.com/length/
UPDATE
Die ausgewählte Antwort verwendet eine perf test, aber es ist leicht fehlerhaft, da es auch einschließlich der element-Auswahl als Teil des perf, was nicht, was wird hier getestet. Hier ist eine aktualisierte perf test:
http://jsperf.com/check-if-div-exists/3
Meine erste Testlauf zeigt, dass die Eigenschaft abrufen ist schneller als index retrieval, obwohl IMO ist es ziemlich vernachlässigbar. Ich immer noch lieber mit Länge wie für mich macht es mehr Sinn, die Absicht der code anstelle von verständlicher Zustand.
.length
bietet derzeit die besten durchschnittlichen performance.Ohne jQuery:
Native JavaScript wird immer schneller. In diesem Fall: (Beispiel)
Wenn Sie überprüfen möchten, um zu sehen, wenn Sie ein übergeordnetes element mit einem anderen element mit einer bestimmten Klasse, Sie könnte verwenden Sie eine der folgenden. (Beispiel)
Alternativ können Sie die
.enthält()
Methode, die auf das übergeordnete element. (Beispiel)..und schließlich, wenn Sie wollen, um zu sehen, wenn ein gegebenes element enthält lediglich eine bestimmte Klasse verwenden:
div
Elemente auf der Seite, dann gehen Sie zurück und Durchlaufen Sie, um zu sehen, ob Sie das Klasse, alles wegzuwerfen, das array am Ende).div
Elemente), side-steps die Frage, die ich sehr hervorgehoben (Bau-array). Versuchen Sie es mit ein paar divs: jsperf.com/hasclass00/2 Es ist 63% langsamer auf meine Kopie von Chrome, 43% langsamer auf meine Kopie von Firefox, 98% (!) langsamer auf Opera. Aber außerdem, Sie Sinn, dass es langsamer Aufbau einer Liste von divs und dann die Suche, anstatt die selector-engine alle Informationen, die es braucht.id
Werte.) Nur eine Sek.hasClass
ist langsamer. Wenn fast alle divs die KlassehasClass
schneller ist auf den großen Browsern. Ich weiß, was ich für realistischer halte.hasClass
war da besser. jsperf.com/hasclass02-half-match Noch unrealistisch (meiner Meinung nach; gleiche Klasse auf die Hälfte des divs auf Ihrer Seite = deutet problem), aber interessant trotzdem. Ich werde auch darauf hinweisen, dass keiner dieser tests misst der Arbeitsspeicher, das kann ein Problem für lang andauernde Seiten (apps).id
Werte), jsperf.com/hasclass00/3:hasClass
24% langsamer in Chrome 10, 42% langsamer auf Firefox 3.6, 96% langsamer auf Opera 11 (alle unter Linux), auf Windows 7, es ist 11% langsamer in Chrome 10, 48% langsamer auf IE9, 69% langsamer auf Safari und bekomme ich unterschiedliche Ergebnisse zwischen einer Krawatte undlength
als ~20% langsamer auf Firefox 3.6. Auf Windows XP mit IE7, 35% langsamer. Blick auf die browserscope. (Fortsetzung)1
für "Anzahl der tests", ich habe mehrere mit jedem und ich erwarte, dass Sie nicht mit FF4.) Mein test-Fälle mit einem sig. Anzahl der divs zeigen, dass, wenn die Anzahl der nicht-übereinstimmenden divs erhöht, diehasClass
Lösung degradiert, vermutlich, weil die vermeidbaren array wird größer. Menschen verwenden einen viel von divs auf Ihren Seiten. Jedenfalls die test-Fälle sind dort für alle, um zu versuchen (@Schleicher: beachten Sie die Datum/Zeiten auf Sie), und separat ich glaube, ich habe meine theoretischen Punkt. Das hat alles viel mehr Zeit als die beiden uns verbracht haben sollte. Frieden,Hier ist eine Lösung ohne die Verwendung von Jquery
Referenz link
Ist es ganz einfach...
Testen für
div
Elemente explizit:if( $('div.mydivclass').length ){...}
.mydivclass
je nach browser und jQuery-version.div
Teil des Selektors.Einfachen code ist unten angegeben :
Ausblenden des div mit der particuler-id :
Den
size()
Methode nur gibt die Anzahl der Elemente, die die jQuery-Selektor wählt - in diesem Fall die Anzahl der Elemente mit der Klassemydivclass
. Wenn es 0 zurückgibt, wird der Ausdruck falsch ist, und deshalb gibt es auch keine, und wenn es gibt eine andere Zahl, die divs müssen vorhanden sein.length
Eigenschaft? Auch diese Prüfungen für beliebiger - element mit dieser Klasse, nicht nur eindiv
. (Nun, das mag sein, was der OP gemeint, wenn auch nicht das, was er/Sie sagt.) Siehe Stefan Kendall ' s Antwort die tut, was der OP eigentlich gesagt (obwohl, wieder, Sie haben vielleicht gemeint, was Sie getan haben).div
Teil, aus zwei Gründen: 1) der Selektor ist nicht begrenzt auf die Tatsache, dass OP verwendet einediv
element (es könnte sich in Zukunft ändern), und 2) in den meisten Browsern und Versionen von jQuery, AFAIK, das sollte schneller sein.length
Eigenschaft ist es, warum es nicht verwenden? Aber wenn es Ihre Präferenz, Messe 'nuff. Auf der anderen, ich wusste nicht, würden Sie bearbeitet es aus. Wenn ich das tun würde ich habe es (mal wieder, das hat er ausdrücklich gesagt "...wenn div mit..." (mein Wert) und dann erwähnt zusätzlich, dass, wenn es trifft, egal, ob es war eindiv
oder nicht, können Sie Graben, dass ein Teil. Aber was auch immer. 🙂size()
Methode ist es deutlich zu machen, dass Sie zählen die Anzahl der Elemente in einem jQuery-Selektor, und nicht nur eine alte array. Aber nochmal, das ist nur meine Präferenz.überprüfen Sie, ob der div vorhanden ist, die mit einer bestimmten Klasse
Es gibt viele Möglichkeiten zu überprüfen, die Existenz der div mit der Klasse name.Unten sind einige nützliche Weise:
Wir können verwenden Sie eine der abobe definierte Weise auf der Grundlage der Anforderung.
Der beste Weg, in Javascript:
In Jquery, die Sie verwenden können, wie dieses.
Mit JavaScript
if($("#myid1").hasClass("mydivclass")){//Do alle Ding}