Überprüfen Sie mit jquery, ob ein div vorhanden ist [duplicate]

Lesezeit: 5 Minuten

Benutzer-Avatar
Rafael Herscovici

Ja, ich weiß, das wurde schon oft gefragt. Aber es verwirrt mich, da die Ergebnisse bei Google für diese Suche verschiedene Methoden zeigen (unten aufgeführt).

$(document).ready(function() {
    if ($('#DivID').length){
        alert('Found with Length');
    }

    if ($('#DivID').length > 0 ) {
        alert('Found with Length bigger then Zero');
    }

    if ($('#DivID') != null ) {
        alert('Found with Not Null');
    }
});

Welcher der 3 ist der richtige Weg, um zu überprüfen, ob das div existiert?

EDIT: Es ist schade zu sehen, dass die Leute nicht lernen wollen, was der bessere Ansatz von den drei verschiedenen Methoden ist. Diese Frage bezieht sich eigentlich nicht auf “Wie überprüfe ich, ob ein div existiert”, sondern darum, welche Methode besser ist und, wenn jemand erklären könnte, warum sie besser ist?

  • @miku – es ist kein Duplikat, da dies den richtigen Weg bestimmen soll, nicht wie.

    – Rafael Herscovici

    1. August 2011 um 13:41 Uhr

  • #Felixkling – alle 3 funktionieren auf jsfiddler jsfiddle.net/k6aAh/1

    – Rafael Herscovici

    1. August 2011 um 13:42 Uhr

  • @Dementic, ja sicher – aber es ist sehr ähnlich – und wenn diese Top-Antwort falsch wäre, hätte eines der 73.694 Augenpaare möglicherweise bereits einen Fehler entdeckt.

    – miku

    1. August 2011 um 13:43 Uhr

  • @Dementic, aber die Top-Antworten scheinen zu konvergieren – ein Zeichen dafür, dass sie ähnlicher sind als andere (zumindest für mich) – : D / aber wie auch immer – lass den Schwarmgeist entscheiden …

    – miku

    1. August 2011 um 13:50 Uhr

  • @Dementic: Es sollte Ihnen zeigen, dass die dritte Methode Ihnen immer noch sagt, dass das Element existiert, obwohl dies nicht der Fall ist. Was schließen Sie daraus? Dass Sie mit der dritten Methode nicht auf die Existenz eines Elements testen können.

    – Felix Klinge

    1. August 2011 um 14:17 Uhr


Der erste ist der prägnanteste, dem würde ich folgen. Die ersten beiden sind gleich, aber der erste ist etwas kürzer, sodass Sie Bytes sparen. Die dritte ist einfach falsch, weil diese Bedingung immer als wahr ausgewertet wird, weil das Objekt es tun wird noch nie null oder falsch sein.

  • Außer im obigen Code haben sie so etwas wie $(‘#DivID’) = null; Lol)

    – ZurabWeb

    6. November 2013 um 21:14 Uhr

  • “Der erste ist der prägnanteste, ich würde mich dafür entscheiden. {…}, damit Sie Bytes sparen”, sehr schlechte Denkweise. Wartbarer Code > prägnanter Code.

    – Niklas Ekmann

    16. November 2013 um 18:30 Uhr


  • @NiklasEkman – Ich stimme zu, dass Wartbarkeit wichtiger ist als präziser Code, aber ich habe nicht verallgemeinert. Ich habe mich wohl nicht klar genug ausgedrückt. Bei der Prüfung der Länge einer Sammlung, für positiv ungleich Null scheint mir das .length Niederlagen .length > 0, also ist es eine Art Doppelgewinn. Trotzdem danke für den Hinweis.

    – karim79

    27. November 2013 um 23:44 Uhr

Benutzer-Avatar
Alex Schlüsselschmied

Wenn Sie lediglich prüfen, ob eine ID vorhanden ist, brauchen Sie nicht weiter darauf einzugehen jQuerykönnten Sie einfach:

if(document.getElementById("yourid") !== null)
{
}

getElementById kehrt zurück null wenn es nicht gefunden werden kann.

Bezug.

Wenn Sie jedoch vorhaben, die zu verwenden jQuery Objekt später würde ich vorschlagen:

$(document).ready(function() {
    var $myDiv = $('#DivID');

    if ( $myDiv.length){
        //you can now reuse  $myDiv here, without having to select it again.
    }


});

Ein Selektor gibt immer a zurück jQuery Objekt, also sollte es keine Notwendigkeit geben, gegen zu prüfen null (Ich wäre interessiert, ob es einen Grenzfall gibt, in dem Sie nachsehen müssen null – aber das glaube ich nicht).

Wenn der Selektor dann nichts findet length === 0 was “falsy” ist (wenn es in bool konvertiert wird, ist es falsch). Wenn es also etwas findet, sollte es “Wahrheit” sein – Sie müssen also nicht auf> 0 prüfen. Nur für die “Wahrheit”.

  • Wenn Sie sich den Kopf zerbrechen wollen, gibt es eine interessante Frage zum Nullobjekt in JS stackoverflow.com/questions/801032/null-object-in-javascript

    – Alex Schlüsselschmied

    1. August 2011 um 14:01 Uhr

  • Wenn Sie jQuery verwenden, sehe ich keinen Grund zur Verwendung getElementById, es sei denn, Sie benötigen wirklich die Leistungsverbesserung (z. B. befindet es sich in einer langen Schleife oder so, obwohl ich mir nicht vorstellen kann, wie dies zustande kommen würde, dass Sie Tausende von Auswahlabfragen immer wieder ausführen müssen). Es ist nur viel ausführlicher, im Laufe von viel Javascript, das wirklich zu mehr Platz und weniger Lesbarkeit führt.

    – Jamie Treworgy

    1. August 2011 um 14:09 Uhr


  • Richtig, ich stimme Ihrem Punkt @jamietre zu. Ich verwende hauptsächlich die jQuery-Version, da ich wahrscheinlich das jq-Objekt an anderer Stelle verwende. Wenn Sie jedoch wissen, dass Sie immer einen ID-Parameter verwenden werden und alles, was Sie tun, darin besteht, das Vorhandensein eines Elements zu prüfen, hilft das jQuery-Objekt nicht viel (da es nur getElementById umschließt). Ich nehme an, der andere Leistungsvorteil (wenn das Überprüfen der Existenz die einzige Notwendigkeit für jq ist – wahrscheinlich ziemlich selten) besteht darin, dass die Bibliothek überhaupt nicht heruntergeladen werden muss. Sie haben Recht, getElementById ist die meiste Zeit unnötig ausführlich, aber es ist gut, eine Alternative zu kennen.

    – Alex Schlüsselschmied

    1. August 2011 um 15:45 Uhr

  • getElementById funktioniert beispielsweise nicht mit Klassennamen, während $(‘.classname’).length dies tut.

    – ZurabWeb

    6. November 2013 um 21:15 Uhr

  • Das stimmt @Piero Ich stimme zu. “document.queryselectorAll()” caniuse.com/querySelector ermöglicht die Verwendung von Klassennamen usw., jedoch nicht für ältere Browser. jQuery abstrahiert dies, sodass Sie sich darüber keine Gedanken machen müssen (und verwendet tatsächlich queryselectorAll im Hintergrund, falls verfügbar).

    – Alex Schlüsselschmied

    8. November 2013 um 9:16 Uhr

Wie karim79 erwähnte, ist die erste die prägnanteste. Ich könnte jedoch argumentieren, dass die zweite verständlicher ist, da es einigen Javascript/jQuery-Programmierern nicht offensichtlich/bekannt ist, dass Werte ungleich Null/false ausgewertet werden true in if-Anweisungen. Und deshalb ist die dritte Methode falsch.

  • Ich würde argumentieren, dass die meisten JavaScript-Entwickler wissen würden, dass eine positive Ganzzahl ungleich Null als “wahr” angesehen wird, aber das ist nur meine Sichtweise 🙂

    – karim79

    1. August 2011 um 13:52 Uhr

  • Ich würde behaupten, dass ALLE Javascript-Entwickler sollte weiß das. Aber heutzutage entwickeln so viele Leute fast ausschließlich in “jQuery” und es fehlen grundlegende Javascript-Grundlagen. Aber das ist eine ganz andere Diskussion 😛

    – tskuzzy

    1. August 2011 um 13:55 Uhr

  • Nicht zustimmen. Das Testen auf Wahrhaftigkeit ist ziemlich grundlegendes Javascript. Während es komisch aussehen mag, wenn Sie mit einer anderen Sprache vertrauter sind, die dieses Konzept nicht hat, ist es sehr verbreitet und wenn Sie sich daran gewöhnt haben, verbessert es die Lesbarkeit.

    – Jamie Treworgy

    1. August 2011 um 13:58 Uhr

1315290cookie-checkÜberprüfen Sie mit jquery, ob ein div vorhanden ist [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy