Búsqueda de sitios web

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
}

Artículos relacionados