Mit jQuery generiere ich programmgesteuert eine Reihe solcher div
's:
<div class="mydivclass" id="myid1">Some Text1</div>
<div class="mydivclass" id="myid2">Some Text2</div>
An einer anderen Stelle in meinem Code muss ich feststellen, ob diese DIVs vorhanden sind. Der Klassenname für die Divs ist derselbe, aber die ID ändert sich für jedes Div. Irgendeine Idee, wie man sie mit jQuery erkennt?
javascript
jquery
jquery-selectors
javascript-framework
Benutzerbild
quelle
quelle
:first
es auf die Leistung würde helfen , (weiß nicht , ob sich die Leistung ein wichtiges Kriterium für @itgorilla ist), sondern ob sie schwankt wild durch Browser, vermutlich , weil es die nativen Funktionen ändert können jQuery das zu tun , verwenden Auswahl. Hier ist ein Testfall, in dem das div existiert , und hier ist ein Testfall, in dem es nicht existiert .if (!$(".mydivclass")[0]){ /* do stuff */ }
Sie können verwenden
size()
, aber jQuery empfiehlt, die Länge zu verwenden, um den Overhead eines anderen Funktionsaufrufs zu vermeiden:So:
http://api.jquery.com/size/
http://api.jquery.com/length/
AKTUALISIEREN
Die ausgewählte Antwort verwendet einen Perf-Test, ist jedoch leicht fehlerhaft, da sie auch die Elementauswahl als Teil des Perf beinhaltet, was hier nicht getestet wird. Hier ist ein aktualisierter Perf-Test:
http://jsperf.com/check-if-div-exists/3
Mein erster Testlauf zeigt, dass das Abrufen von Eigenschaften schneller ist als das Abrufen von Indizes, obwohl IMO dies ziemlich vernachlässigbar ist. Ich bevorzuge immer noch die Verwendung von Länge, da es für die Absicht des Codes sinnvoller ist, als für eine knappere Bedingung.
quelle
.length
bietet es derzeit die beste durchschnittliche Leistung.Ohne jQuery:
Natives JavaScript wird immer schneller sein. In diesem Fall: (Beispiel)
Wenn Sie überprüfen möchten, ob ein übergeordnetes Element ein anderes Element mit einer bestimmten Klasse enthält, können Sie eine der folgenden Methoden verwenden. (Beispiel)
Alternativ können Sie die
.contains()
Methode für das übergeordnete Element verwenden. (Beispiel)..und schließlich, wenn Sie überprüfen möchten, ob ein bestimmtes Element nur eine bestimmte Klasse enthält, verwenden Sie:
quelle
quelle
div
Elemente auf der Seite, dann gehen Sie zurück und Durchlaufen Sie sie, um zu sehen, ob sie diese Klasse haben, und werfen Sie das Array am Ende weg.hasClass
ist 33% schneller als die anderen Selektoren hier. Überprüfen Sie jsperf.com/hasclass00div
Elemente), der genau das Problem umgeht, das ich hervorgehoben habe ( Erstellen des Arrays). Probieren Sie es mit einer Reihe von Divs aus: jsperf.com/hasclass00/2 Es ist 63% langsamer auf meiner Chrome-Kopie, 43% langsamer auf meiner Firefox-Kopie, 98% (!) Langsamer auf Opera. Darüber hinaus ist es sinnvoll , eine Liste von Divs zu erstellen und diese dann zu durchsuchen, anstatt der Selector-Engine alle erforderlichen Informationen zu geben.Hier ist eine Lösung ohne Jquery
Referenz Link
quelle
Es ist ganz einfach...
quelle
So testen Sie
div
explizit auf Elemente:if( $('div.mydivclass').length ){...}
quelle
.mydivclass
je nach Browser und jQuery-Version.div
Teil des Selektors tatsächlich einschließt .Der einfache Code ist unten angegeben:
So verstecken Sie das div mit der Partizip-ID:
quelle
Hier sind einige Möglichkeiten:
Wir können je nach Anforderung eine der oben beschriebenen Möglichkeiten verwenden.
quelle
Die
size()
Methode gibt nur die Anzahl der Elemente zurück, die der jQuery-Selektor auswählt - in diesem Fall die Anzahl der Elemente mit der Klassemydivclass
. Wenn es 0 zurückgibt, ist der Ausdruck falsch, und daher gibt es keinen, und wenn es eine andere Zahl zurückgibt, müssen die divs existieren.quelle
length
Eigenschaft gibt? Auch diese Kontrollen für jedes Element mit dieser Klasse, nicht nur einemdiv
. (Nun, das könnte das sein, was das OP bedeutete, auch wenn es nicht das ist, was er / sie gesagt hat.) Siehe Stefan Kendalls Antwort, die das tut, was das OP tatsächlich gesagt hat (auch wenn sie möglicherweise gemeint haben, was Sie getan haben).div
Teil zu entfernen , aus zwei Gründen: 1) Der Selektor ist nicht so stark an die Tatsache gebunden, dass OP eindiv
Element verwendet (es könnte sich in Zukunft ändern), und 2) in Bei den meisten Browsern und Versionen von jQuery, AFAIK, sollte dies schneller sein.length
Immobilie ist da, warum nicht nutzen? Aber wenn es Ihre Präferenz ist, fair 'nuff. Andererseits wusste ich nicht, dass Sie es herausgeschnitten hatten. Wenn ich das tun würde, hätte ich es belassen (wieder sagte er ausdrücklich "... wenn div mit ..." (meine Betonung) und erwähnte dann zusätzlich, wenn es egal wäre, ob es war eindiv
oder nicht, Sie könnten diesen Teil fallen lassen. Aber was auch immer. :-)size()
Methode ist da, um klar zu machen, dass Sie die Anzahl der Elemente in einem jQuery-Selektor zählen und nicht irgendein altes Array. Aber auch das ist nur meine Präferenz.Überprüfen Sie, ob das div mit einer bestimmten Klasse existiert
quelle
quelle
quelle
In Jquery können Sie so verwenden.
Mit JavaScript
quelle
Hier ist eine sehr beispielhafte Lösung für die Prüfklasse (hasClass) in Javascript:
quelle
Der beste Weg in Javascript:
quelle
if ($ ("# myid1"). hasClass ("mydivclass")) {// Mach irgendetwas}
quelle
Verwenden Sie diese Option, um die gesamte Seite zu durchsuchen
quelle