Próbuję wywołać funkcję tylko wtedy, gdy element HTML jest pusty, używając jQuery.
Coś takiego:
if (isEmpty($('#element'))) {
// do something
}
javascript
jquery
witam
źródło
źródło
$('#elem').text().match(/\S/) || alert('empty');
Odpowiedzi:
Aby uzyskać więcej informacji, zobacz http://api.jquery.com/is/ i http://api.jquery.com/empty-selector/
EDYTOWAĆ:
Jak niektórzy wskazywali, interpretacja pustego elementu w przeglądarce może się różnić. Jeśli chcesz zignorować niewidoczne elementy, takie jak spacje i podziały wierszy, i uczynić implementację bardziej spójną, możesz utworzyć funkcję (lub po prostu użyć kodu w niej zawartego).
Możesz także zrobić z niego wtyczkę jQuery, ale masz pomysł.
źródło
Uważam, że jest to jedyny niezawodny sposób (ponieważ Chrome i FF uważają białe spacje i łamanie linii za elementy):
źródło
if(!$.trim($("selector").html())
if($("selector").children().length === 0)
lubif($("selector > *").length === 0)
.Białe spacje i podziały linii to główne problemy z używaniem: pustego selektora. Ostrożnie, w CSS pseudo-klasa: pusta zachowuje się w ten sam sposób. Podoba mi się ta metoda:
źródło
$.children()
nie zwraca tekstowych lub komentarz węzłów, co oznacza tylko to rozwiązanie jest elementem kontroli jest pusty elementów . Jeśli element, który zawiera tylko tekst lub komentarze, nie powinien być uważany za pusty dla twoich potrzeb, powinieneś użyć jednego z innych rozwiązań.select
elementów jest idealny. warunek może być równieżif(! $el.children().length)
.Tak, wiem, to nie jest jQuery, więc możesz użyć tego:
Szczęśliwa teraz?
źródło
filter
funkcji jQuery, ponieważ nie chciałem używać jQuery wewnątrz funkcji, chyba że jest to konieczne.<div class="results"> </div>
, to instrukcja zwróci false. jsfiddle.net/ytliuSVN/0pdwLt46źródło
this
element jQuery @ZealMurapa?Jeśli przez „pusty” masz na myśli brak treści HTML,
źródło
Pusty jak w nie zawiera tekstu?
źródło
W CV można znaleźć wiele opcji, aby sprawdzić, czy element jest pusty:
1- Korzystanie
html
:2- Korzystanie
text
:3- Korzystanie
is(':empty')
:4- Korzystanie
length
Nałogowo, jeśli próbujesz dowiedzieć się, czy element wejściowy jest pusty, możesz użyć
val
:źródło
Innym rozwiązaniem, które powinny wymagać mniej „pracy” dla przeglądarki niż
html()
lubchildren()
:źródło
lub
źródło
Możesz spróbować:
* Zamień białe spacje, po prostu wstaw;)
źródło
!/[\S]/.test($('Selector').html())
działałoby to lepiej, gdy znajdziesz trochę białych znaków, wiesz, że nie jest pustyThe production CharacterClassEscape :: S evaluates by returning the set of all characters not included in the set returned by CharacterClassEscape :: s.
z ecma-international.org/ecma-262/5.1/#sec-15.10.2.12źródło
Szukasz
jQuery.isEmptyObject()
?http://api.jquery.com/jquery.isemptyobject/
źródło
Oto filtr jQuery oparty na https://stackoverflow.com/a/6813294/698289
źródło
JavaScript
spróbuj użyć dowolnego z tego!
źródło
Spróbuj tego:
źródło
Podziały linii są traktowane jako zawartość elementów w FF.
Dawny:
W IE oba div są uważane za puste, w FF i Chrome tylko ostatni jest pusty.
Możesz skorzystać z rozwiązania dostarczonego przez @qwertymk
lub
źródło