Estou tentando chamar uma função apenas se um elemento HTML estiver vazio, usando jQuery.
Algo assim:
if (isEmpty($('#element'))) {
// do something
}
javascript
jquery
vitto
fonte
fonte
$('#elem').text().match(/\S/) || alert('empty');
Respostas:
para obter mais informações, consulte http://api.jquery.com/is/ e http://api.jquery.com/empty-selector/
EDITAR:
Como alguns apontaram, a interpretação do navegador de um elemento vazio pode variar. Se você deseja ignorar elementos invisíveis, como espaços e quebras de linha, e tornar a implementação mais consistente, é possível criar uma função (ou apenas usar o código dentro dela).
Você também pode transformá-lo em um plug-in jQuery, mas você entendeu.
fonte
Achei essa a única maneira confiável (já que o Chrome e o FF consideram espaços em branco e quebras de linha como elementos):
fonte
if(!$.trim($("selector").html())
if($("selector").children().length === 0)
ouif($("selector > *").length === 0)
.Espaço em branco e quebras de linha são os principais problemas do uso de: seletor vazio. Cuidado, em CSS, a pseudo classe: empty se comporta da mesma maneira. Eu gosto deste método:
fonte
$.children()
não retorna nós de texto ou comentário, o que significa que esta solução apenas verifica se o elemento está vazio de elementos . Se um elemento que contém apenas texto ou comentários não deve ser considerado vazio para suas necessidades, você deve usar uma das outras soluções.select
elementos é perfeito. a condição também pode serif(! $el.children().length)
.Sim, eu sei, isso não é jQuery, então você pode usar isso:
Feliz agora?
fonte
filter
função jQuery , pois não queria usar o jQuery dentro da função, a menos que necessário.<div class="results"> </div>
, esta declaração retornará false. jsfiddle.net/ytliuSVN/0pdwLt46fonte
this
além do elemento jQuery @ZealMurapa?Se por "vazio", você quer dizer sem conteúdo HTML,
fonte
Vazio como em não contém texto?
fonte
Em resumo, existem muitas opções para descobrir se um elemento está vazio:
1- Usando
html
:2- Usando
text
:3- Usando
is(':empty')
:4- Usando
length
Além disso, se você está tentando descobrir se um elemento de entrada está vazio, pode usar
val
:fonte
Outra opção que deve exigir menos "trabalho" para o navegador que
html()
ouchildren()
:fonte
ou
fonte
Podes tentar:
* Substitua espaços em branco, apenas no caso de;)
fonte
!/[\S]/.test($('Selector').html())
funcionar melhor, uma vez que você encontrar algum espaço em branco que você sabe que não está vaziaThe production CharacterClassEscape :: S evaluates by returning the set of all characters not included in the set returned by CharacterClassEscape :: s.
a partir ecma-international.org/ecma-262/5.1/#sec-15.10.2.12fonte
Você está procurando
jQuery.isEmptyObject()
?http://api.jquery.com/jquery.isemptyobject/
fonte
Aqui está um filtro jQuery baseado em https://stackoverflow.com/a/6813294/698289
fonte
Javascript
tente usar isso!
fonte
Tente o seguinte:
fonte
Quebras de linha são consideradas como conteúdo para elementos no FF.
Ex:
No IE, os dois divs são considerados vazios; no FF, no Chrome, apenas o último está vazio.
Você pode usar a solução fornecida por @qwertymk
ou
fonte