Ich versuche, eine Funktion nur mit jQuery aufzurufen, wenn ein HTML-Element leer ist.
Etwas wie das:
if (isEmpty($('#element'))) {
// do something
}
javascript
jquery
vitto
quelle
quelle
$('#elem').text().match(/\S/) || alert('empty');
Antworten:
Weitere Informationen finden Sie unter http://api.jquery.com/is/ und http://api.jquery.com/empty-selector/.
BEARBEITEN:
Wie einige darauf hingewiesen haben, kann die Browserinterpretation eines leeren Elements variieren. Wenn Sie unsichtbare Elemente wie Leerzeichen und Zeilenumbrüche ignorieren und die Implementierung konsistenter gestalten möchten, können Sie eine Funktion erstellen (oder einfach den darin enthaltenen Code verwenden).
Sie können es auch zu einem jQuery-Plugin machen, aber Sie haben die Idee.
quelle
Ich fand, dass dies der einzig zuverlässige Weg ist (da Chrome & FF Leerzeichen und Zeilenumbrüche als Elemente betrachten):
quelle
if(!$.trim($("selector").html())
if($("selector").children().length === 0)
oderif($("selector > *").length === 0)
.Leerzeichen und Zeilenumbrüche sind die Hauptprobleme bei der Verwendung von: leerer Auswahl. Achtung, in CSS verhält sich die leere Pseudoklasse genauso. Ich mag diese Methode:
quelle
$.children()
, keinen Text oder Kommentar Knoten zurück , die diese Lösung nur überprüft , bedeutet das Element leer ist Elemente . Wenn ein Element, das nur Text oder Kommentare enthält, für Ihre Anforderungen nicht als leer betrachtet werden sollte, sollten Sie eine der anderen Lösungen verwenden.select
Elemente ist perfekt. die Bedingung kann auch seinif(! $el.children().length)
.Ja, ich weiß, das ist nicht jQuery, also könnten Sie dies verwenden:
Jetzt glücklich?
quelle
filter
Funktion verwendet, da ich jQuery nicht in der Funktion verwenden wollte, es sei denn, dies ist erforderlich.<div class="results"> </div>
, gibt diese Anweisung false zurück. jsfiddle.net/ytliuSVN/0pdwLt46quelle
this
außer dem jQuery-Element @ZealMurapa noch etwas anderes?Wenn mit "leer" gemeint ist, ohne HTML-Inhalt,
quelle
Leer wie in enthält keinen Text?
quelle
Im Lebenslauf gibt es viele Optionen, um herauszufinden, ob ein Element leer ist:
1- Verwenden von
html
:2- Verwenden von
text
:3- Verwenden von
is(':empty')
:4- Verwenden
length
Wenn Sie in Sucht suchen, um herauszufinden, ob ein Eingabeelement leer ist, können Sie Folgendes verwenden
val
:quelle
Eine weitere Option, die weniger "Arbeit" für den Browser erfordern sollte als
html()
oderchildren()
:quelle
oder
quelle
Du kannst es versuchen:
* Ersetzen Sie Leerzeichen, nur für den Fall;)
quelle
!/[\S]/.test($('Selector').html())
besser funktionieren, wenn Sie ein Leerzeichen gefunden haben, wissen Sie, dass es nicht leer istThe production CharacterClassEscape :: S evaluates by returning the set of all characters not included in the set returned by CharacterClassEscape :: s.
von ecma-international.org/ecma-262/5.1/#sec-15.10.2.12quelle
Suchen Sie
jQuery.isEmptyObject()
?http://api.jquery.com/jquery.isemptyobject/
quelle
Hier ist ein jQuery-Filter, der auf https://stackoverflow.com/a/6813294/698289 basiert
quelle
JavaScript
versuchen Sie es mit irgendetwas davon!
quelle
Versuche dies:
quelle
Zeilenumbrüche gelten als Inhalt für Elemente in FF.
Ex:
Im IE werden beide Divs als leer betrachtet, in FF und Chrome ist nur der letzte leer.
Sie können die von @qwertymk bereitgestellte Lösung verwenden
oder
quelle