it-swarm.com.de

Wie überprüfen Sie, ob ein Selektor mit etwas in jQuery übereinstimmt?

In Mootools würde ich einfach if ($('target')) { ... } ausführen. Funktioniert if ($('#target')) { ... } in jQuery genauso?

436
One Crayon

Wie die anderen Kommentatoren vorschlagen, scheint dies am effizientesten zu sein:

if ($(selector).length ) {
    // Do something
}

Wenn Sie unbedingt eine Funktion exists () haben müssen, die langsamer ist, können Sie Folgendes tun:

jQuery.fn.exists = function(){return this.length>0;}

Dann können Sie in Ihrem Code verwenden

if ($(selector).exists()) {
    // Do something
}

Wie beantwortet hier

707
Pat

nein, jquery gibt immer ein jquery-Objekt zurück, unabhängig davon, ob eine Auswahl getroffen wurde oder nicht. Sie müssen .length verwenden

if ( $('#someDiv').length ){

}
85
redsquare

wenn du benutzt hast:

jQuery.fn.exists = function(){return ($(this).length > 0);}
if ($(selector).exists()) { }

sie würden implizieren, dass eine Verkettung möglich war, wenn dies nicht der Fall ist.

Das wäre besser

jQuery.exists = function(selector) {return ($(selector).length > 0);}
if ($.exists(selector)) { }
19
Jon Erickson

Ich glaube, die meisten der hier antwortenden Leute haben die Frage nicht ganz verstanden, sonst könnte ich mich irren.

Die Frage lautet: "Wie prüfe ich, ob in jQuery ein Selektor vorhanden ist?"

Die meisten Leute haben dies genommen, um "mithilfe von jQuery zu überprüfen, ob ein Element im DOM vorhanden ist". Kaum austauschbar.

mit jQuery können Sie benutzerdefinierte Selektoren erstellen. Sehen Sie hier, was passiert, wenn Sie versuchen, e zu verwenden, bevor Sie es initialisieren.

$(':YEAH');
"Syntax error, unrecognized expression: YEAH"

Nachdem ich darauf gestoßen war, wurde mir klar, dass es nur eine Frage der Überprüfung war

if ($.expr[':']['YEAH']) {
    // Query for your :YEAH selector with ease of mind.
}

Prost.

16
skqr

Noch ein anderer Weg:

$('#elem').each(function(){
  // do stuff
});
14
PhilT
if ($('#elem')[0]) {
  // do stuff
}
13
Sean Curtis

Alternative:

if( jQuery('#elem').get(0) ) {}
3
James

Ich bevorzuge die

    if (jQuery("#anyElement").is("*")){...}

Wobei grundsätzlich geprüft wird, ob dieses Element eine Art "*" (beliebiges Element) ist. Nur eine klarere Syntax und das "Ist" macht mehr Sinn in einem "Wenn"

1
user1134422
jQuery.fn.exists = function(selector, callback) {
    var $this = $(this);
    $this.each(function() {
        callback.call(this, ($(this).find(selector).length > 0));
    });
};
1
logrox