Is er een "exists" functie voor jQuery?

Hoe kan ik het bestaan van een element in jQuery controleren?

De huidige code die ik heb is deze:

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

Is er een elegantere manier om dit aan te pakken? Misschien een plugin of een functie?

Ja!

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

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

Dit is een reactie op: Herding Code podcast met Jeff Atwood

Commentaren (11)

Als u

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

zou je impliceren dat chaining mogelijk was, terwijl dat niet zo is.

Dit zou beter zijn:

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

Als alternatief, uit de FAQ:

if ( $('#myDiv').length ) { /* Do something */ }

Je zou ook het volgende kunnen gebruiken. Als er geen waarden in de jQuery object array dan het verkrijgen van het eerste item in de array zou undefined terug te keren.

if ( $('#myDiv')[0] ) { /* Do something */ }
Commentaren (10)

Je kunt gebruiken:

if ($(selector).is('*')) {
  // Do something
}

Een iets eleganter, misschien.

Commentaren (5)