javascript - ¿Cómo puedo comprobar si un elemento HTML está vacío usando jQuery?
Estoy intentando llamar a una función solo si un elemento HTML está vacío, usando jQuery.
Algo así:
if (isEmpty($('#element'))) {
// do something
}
Respuesta #1
if ($('#element').is(':empty')){
//do something
}
para más información, vea http://api.jquery.com/is/ y http://api.jquery.com/empty-selector/
EDITAR:
Como algunos han señalado, la interpretación de un elemento vacío por parte del navegador puede variar. Si desea ignorar elementos invisibles como espacios y saltos de línea y hacer que la implementación sea más consistente, puede crear una función (o simplemente usar el código dentro de ella).
function isEmpty( el ){
return !$.trim(el.html())
}
if (isEmpty($('#element'))) {
// do something
}
También puedes convertirlo en un complemento de jQuery, pero entiendes la idea.
Respuesta #2
Encontré que esta es la única manera confiable (ya que Chrome y FF consideran los espacios en blanco y los saltos de línea como elementos):
if($.trim($("selector").html())=='')
Respuesta #3
El espacio en blanco y los saltos de línea son los principales problemas al usar el selector :empty. Ten cuidado, en CSS la pseudo clase :empty se comporta de la misma manera. Me gusta este método:
if ($someElement.children().length == 0){
someAction();
}
Respuesta #4
!elt.hasChildNodes()
Sí, lo sé, esto no es jQuery, así que podrías usar esto:
!$(elt)[0].hasChildNodes()
¿Feliz ahora?
Respuesta #5
jQuery.fn.doSomething = function() {
//return something with 'this'
};
$('selector:empty').doSomething();
Respuesta #6
Si por "vacío" te refieres a que no tiene contenido HTML,
if($('#element').html() == "") {
//call function
}
Respuesta #7
En resumen, hay muchas opciones para averiguar si un elemento está vacío:
1- Usando html:
if (!$.trim($('p#element').html())) {
// paragraph with id="element" is empty, your code goes here
}
2- Usando text:
if (!$.trim($('p#element').text())) {
// paragraph with id="element" is empty, your code goes here
}
3- Usando is(':empty'):
if ($('p#element').is(':empty')) {
// paragraph with id="element" is empty, your code goes here
}
4- Usando length
if (!$('p#element').length){
// paragraph with id="element" is empty, your code goes here
}
En adición, si estás tratando de averiguar si un elemento de entrada está vacío, puedes usar val:
if (!$.trim($('input#element').val())) {
// input with id="element" is empty, your code goes here
}
