¿Cuál es la mejor manera de detectar si un jQuery-selector devuelve un objeto vacío? Si lo haces:
alert($('#notAnElement'));
obtienes [Object Object], así que la forma en que lo hago ahora es:
alert($('#notAnElement').get(0));
que escribirá "indefinido", por lo que puede hacer una comprobación para eso. Pero parece muy malo. ¿Qué otra forma hay?
jquery
jquery-selectors
peirix
fuente
fuente
this
es mucho más útil quetrue
. Vea mi respuesta portando elpresence
método de Rails .this
a una variable, recomendaría cambiar la declaración de retorno a lo que CSharp tiene.fuente
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 usar cualquiera de los siguientes ejemplos dentro de una instrucción IF y todos producen el mismo resultado. Es cierto que si el selector encuentra un elemento coincidente, falso en caso contrario.
fuente
.length
menos que el código esté caliente. Ciertamente es el más claro con intención. Además,.size()
está en desuso y lo ha estado durante años (desde 1.8). Solo voy a editar su respuesta y eliminarla, siéntase libre de agregarla nuevamente con una nota, pero es tan antigua que creo que es mejor que se haya ido.Me gusta hacer algo como esto:
Entonces puedes hacer algo como esto:
http://jsfiddle.net/vhbSG/
fuente
TypeError: firstExistingElement.doSomething is not a function
. Puede ajustar toda la asignación / prueba de variables en un if () y solo hacer algo si se encuentra un elemento ...Me gusta usar
presence
, inspirado en Ruby on Rails :Tu ejemplo se convierte en:
Me parece superior a la propuesta
$.fn.exists
porque todavía puede usar operadores booleanos oif
, pero el resultado verdadero es más útil. Otro ejemplo:fuente
Mi preferencia, y no tengo idea de por qué esto no está ya en jQuery:
Usado así:
O, como se ve en CoffeeScript:
fuente
Esto está en la documentación de JQuery:
http://learn.jquery.com/using-jquery-core/faq/how-do-i-test-whether-an-element-exists/
fuente
Es posible que desee hacer esto todo el tiempo de forma predeterminada. He estado luchando por ajustar la función jquery o el método jquery.fn.init para hacer esto sin error, pero puede hacer un cambio simple en la fuente jquery para hacer esto. Se incluyen algunas líneas circundantes que puede buscar. Recomiendo buscar fuente jquery para
The jQuery object is actually just the init constructor 'enhanced'
Por último, pero no menos importante, puede obtener el código fuente de jquery sin comprimir aquí: http://code.jquery.com/
fuente