378 Stimmen

Wie prüfe ich mit jQuery, ob ein HTML-Element leer ist?

Ich versuche, eine Funktion nur dann aufzurufen, wenn ein HTML-Element leer ist, mit jQuery.

Etwa so:

if (isEmpty($('#element'))) {
    // do something
}

634voto

Emil Punkte 8199
if ($('#element').is(':empty')){
  //do something
}

für weitere Informationen siehe http://api.jquery.com/is/ y http://api.jquery.com/empty-selector/

EDIT:

Wie bereits erwähnt, können die Browser ein leeres Element unterschiedlich interpretieren. Wenn Sie unsichtbare Elemente wie Leerzeichen und Zeilenumbrüche ignorieren und die Implementierung einheitlicher gestalten möchten, können Sie eine Funktion erstellen (oder einfach den darin enthaltenen Code verwenden).

  function isEmpty( el ){
      return !$.trim(el.html())
  }
  if (isEmpty($('#element'))) {
      // do something
  }

Sie können auch ein jQuery-Plugin daraus machen, aber Sie verstehen die Idee.

126voto

Serge Shultz Punkte 5658

Ich habe festgestellt, dass dies die einzige zuverlässige Methode ist (da Chrome und FF Leerzeichen und Zeilenumbrüche als Elemente betrachten):

if($.trim($("selector").html())=='')

79voto

DMTintner Punkte 13937

Leerraum und Zeilenumbrüche sind die Hauptprobleme bei der Verwendung des Selektors :empty. Vorsicht, in CSS verhält sich die Pseudoklasse :empty genauso. Ich mag diese Methode:

if ($someElement.children().length == 0){
     someAction();
}

29voto

!elt.hasChildNodes()

Ja, ich weiß, das ist nicht jQuery, aber Sie können das hier verwenden:

!$(elt)[0].hasChildNodes()

Sind Sie jetzt zufrieden?

19voto

AlienWebguy Punkte 75424
jQuery.fn.doSomething = function() {
   //return something with 'this'
};

$('selector:empty').doSomething();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X