¿Existe una función "exists" para jQuery?

¿Cómo puedo comprobar la existencia de un elemento en jQuery?

El código actual que tengo es este:

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

¿Hay una manera más elegante de abordar esto? ¿Quizás un plugin o una función?

¡Sí!

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

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

Esto es en respuesta a: Herding Code podcast con Jeff Atwood

Comentarios (11)

Si utilizó

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

darías a entender que el encadenamiento es posible cuando no lo es.

Esto sería mejor:

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

Alternativamente, del FAQ:

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

También podría utilizar lo siguiente. Si no hay valores en el array de objetos de jQuery, obtener el primer elemento del array devolvería undefined.

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

Puedes usar:

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

Un poco más elegante, quizás.

Comentarios (5)