Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

En Mootools, simplemente ejecutaba if ($ ('target')) {...} . ¿ if ($ ('# target')) {...} en jQuery funciona de la misma manera?

¿Fue útil?

Solución

Como los otros comentaristas sugieren que la forma más eficiente de hacerlo parece ser:

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

Si absolutamente debe tener una función exist (), que será más lenta, puede hacer:

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

Luego, en su código puede usar

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

Como se respondió aquí

Otros consejos

no, jquery siempre devuelve un objeto jquery independientemente de si un selector coincide o no. Necesitas usar .length

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

}

si usaste:

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

implicaría que el encadenamiento era posible cuando no lo es.

Esto sería mejor

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

Creo que la mayoría de las personas que respondieron aquí no entendieron la pregunta, o podría estar equivocado.

La pregunta es cómo comprobar si existe o no un selector en jQuery. "

La mayoría de las personas han tomado esto para " cómo verificar si un elemento existe en el DOM usando jQuery. " Difícilmente intercambiable.

jQuery le permite crear selectores personalizados, pero vea aquí qué sucede cuando intenta usar en e antes de inicializarlo;

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

Después de toparme con esto, me di cuenta de que era simplemente cuestión de verificar

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

Saludos.

Otra forma más:

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

Alternativamente:

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

Prefiero el

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

Que básicamente comprueba si este elemento es una especie de " * " (cualquier elemento) Solo una sintaxis más limpia y el " es " tiene más sentido dentro de un " if "

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

Para mí .exists no funciona, así que uso el índice:

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

primero crea una función:

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

luego

if($(selector).is_exists()){ ... }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top