¿Cómo puedo detectar si un selector devuelve nulo?
¿Cuál es la mejor manera de detectar si un selector jQuery devuelve un objeto vacío? Si lo haces:
alert($('#notAnElement'));
obtienes [objeto Objeto], así que la forma en que lo hago ahora es:
alert($('#notAnElement').get(0));
que escribirá "indefinido", por lo que puede verificarlo. Pero parece muy malo. ¿Qué otra manera hay?
Mi favorito es ampliar jQuery con esta pequeña comodidad:
$.fn.exists = function () {
return this.length !== 0;
}
Usado como:
$("#notAnElement").exists();
Más explícito que usar longitud.
if ( $("#anid").length ) {
alert("element(s) found")
}
else {
alert("nothing found")
}
El selector devuelve una matriz de objetos jQuery. Si no se encuentran elementos coincidentes, devuelve una matriz vacía. Puede verificar la .length
colección devuelta por el selector o verificar si el primer elemento de la matriz está "indefinido".
Puede utilizar cualquiera de los siguientes ejemplos dentro de una declaración IF y todos producirán el mismo resultado. Verdadero, si el selector encontró un elemento coincidente, falso en caso contrario.
$('#notAnElement').length > 0
$('#notAnElement').get(0) !== undefined
$('#notAnElement')[0] !== undefined
Me gusta hacer algo como esto:
$.fn.exists = function(){
return this.length > 0 ? this : false;
}
Entonces puedes hacer algo como esto:
var firstExistingElement =
$('#iDontExist').exists() || //<-returns false;
$('#iExist').exists() || //<-gets assigned to the variable
$('#iExistAsWell').exists(); //<-never runs
firstExistingElement.doSomething(); //<-executes on #iExist
http://jsfiddle.net/vhbSG/