javascript - jquery name selector
¿Cómo verifica si un selector coincide con algo en jQuery? (11)
Esta pregunta ya tiene una respuesta aquí:
- ¿Existe una función “existe” para jQuery? 38 respuestas
En Mootools, solo correría if ($(''target'')) { ... }
. ¿Funciona de la misma forma if ($(''#target'')) { ... }
en jQuery?
Alternativamente:
if( jQuery(''#elem'').get(0) ) {}
Como los otros comentaristas están sugiriendo que la forma más eficiente de hacerlo parece ser:
if ($(selector).length ) {
// Do something
}
Si es absolutamente necesario que tenga una función existir (), que será más lenta, puede hacer:
jQuery.fn.exists = function(){return this.length>0;}
Luego en tu código puedes usar
if ($(selector).exists()) {
// Do something
}
Como se responde aquí
Creo que la mayoría de las personas que respondieron aquí no entendieron bien la pregunta, o de lo contrario podría estar equivocado.
La pregunta es "cómo verificar si existe un selector en jQuery".
La mayoría de la gente ha tomado esto para "cómo verificar si un elemento existe en el DOM usando jQuery". Difícilmente intercambiables.
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 encontrarme con esto, me di cuenta de que era simplemente una cuestión de comprobación
if ($.expr['':''][''YEAH'']) {
// Query for your :YEAH selector with ease of mind.
}
Aclamaciones.
Otra forma más:
$(''#elem'').each(function(){
// do stuff
});
Para mí .exists
no funciona, así que uso el índice:
if ($("#elem").index() ! = -1) {}
Prefiero el
if (jQuery("#anyElement").is("*")){...}
Que básicamente comprueba si estos elementos son un tipo de "*" (cualquier elemento). Solo una sintaxis más clara y "es" tiene más sentido dentro de un "si"
Primero crea una función:
$.fn.is_exists = function(){ return document.getElementById(selector) }
entonces
if($(selector).is_exists()){ ... }
no, jquery siempre devuelve un objeto jquery independientemente de si un selector coincidió o no. Necesitas usar .length
if ( $(''#someDiv'').length ){
}
si usaste
jQuery.fn.exists = function(){return ($(this).length > 0);}
if ($(selector).exists()) { }
Usted implicaría que el encadenamiento era posible cuando no lo es.
Esto seria mejor
jQuery.exists = function(selector) {return ($(selector).length > 0);}
if ($.exists(selector)) { }
if ($(''#elem'')[0]) {
// do stuff
}
jQuery.fn.exists = function(selector, callback) {
var $this = $(this);
$this.each(function() {
callback.call(this, ($(this).find(selector).length > 0));
});
};