Siempre me pregunté por qué jQuery devuelve verdadero si estoy tratando de encontrar elementos por selector de id. Que no existen en la estructura DOM.
De esta manera:
<div id="one">one</div>
<script>
console.log(!!$('#one')) // prints true
console.log(!!$('#two')) // is also true! (empty jQuery object)
console.log(!!document.getElementById('two')) // prints false
</script>
Sé que puedo utilizar !!$('#two').length
puesto que la longitud === 0 si el objeto está vacío, pero me parece lógico que un selector devolvería el elemento si se encuentra, de lo contrario null
(como el nativo document.getElementById
hace).
F.ex, esta lógica no se puede hacer en jQuery:
var div = $('#two') || $('<div id="two"></div>');
¿No sería más lógico que el selector de ID devuelto nulo si no lo encuentra?
anyone?
También pensaba que esta era una de las razones. Pero, ¿es realmente una buena idea suprimir los errores de esta manera? Si no se encuentra el ID, me gustaría saber dónde se produce el error en lugar de depurar cada cadena. – David
Este podría ser el comportamiento que desea si usa el selector de id, ya que los identificadores son (normalmente) únicos. Pero, ¿qué sucede si utiliza un selector de clase para cerrar todos los cuadros de diálogo/ventanas emergentes en una página? No desearía que la función arrojara un error solo porque el usuario no tenía actualmente ningún diálogo abierto. Quisieras que silenciosamente no hiciera nada. – Dan
JavaScript no tiene nada llamado Excepciones de NullReference. ¿Quizás te refieres a 'ReferenceError'? –