Wie überprüfst du, ob ein Selektor mit etwas in jQuery übereinstimmt?

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

Wie die anderen Kommentatoren den effizientesten Weg vorschlagen, scheint es zu sein:

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

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

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

Dann kannst du in deinem Code verwenden

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

Wie hier beantwortet

Nein, jquery gibt immer ein jquery-Objekt zurück, unabhängig davon, ob ein Selektor gefunden wurde oder nicht. Sie müssen .length verwenden

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

wenn du benutzt hast:

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

Sie würden implizieren, dass Verkettung möglich war, wenn es nicht ist.

Das wäre besser

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

Ich denke, die meisten Leute, die hier antworten, haben die Frage nicht ganz verstanden, sonst könnte ich mich irren.

Die Frage ist “wie man überprüft, ob ein Selektor in jQuery existiert oder nicht.”

Die meisten Leute haben dies für “wie man überprüft, ob ein Element im DOM mit jQuery existiert.” Kaum austauschbar.

Mit jQuery können Sie benutzerdefinierte Selektoren erstellen, sehen Sie hier aber, was passiert, wenn Sie versuchen, on e vor der Initialisierung zu verwenden.

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

Nachdem ich darauf gestoßen war, wurde mir klar, dass es nur darum ging zu überprüfen

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

Prost.

Noch ein anderer Weg:

 $('#elem').each(function(){ // do stuff }); 
 if ($('#elem')[0]) { // do stuff } 

Alternative:

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

Ich bevorzuge die

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

Was im Grunde überprüft, ob diese Elemente eine Art “*” (irgendein Element) ist. Nur eine sauberere Syntax und das “ist” macht mehr Sinn in einem “wenn”

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

Für mich .exists nicht, also verwende ich den Index:

 if ($("#elem").index() ! = -1) {} 

Erstellen Sie zuerst eine function:

 $.fn.is_exists = function(){ return document.getElementById(selector) } 

dann

 if($(selector).is_exists()){ ... }