J'essaie d'appeler une fonction uniquement si un élément HTML est vide, en utilisant jQuery.
Quelque chose comme ça:
if (isEmpty($('#element'))) {
// do something
}
javascript
jquery
vitto
la source
la source
$('#elem').text().match(/\S/) || alert('empty');
Réponses:
pour plus d'informations, voir http://api.jquery.com/is/ et http://api.jquery.com/empty-selector/
ÉDITER:
Comme certains l'ont souligné, l'interprétation par le navigateur d'un élément vide peut varier. Si vous souhaitez ignorer les éléments invisibles tels que les espaces et les sauts de ligne et rendre l'implémentation plus cohérente, vous pouvez créer une fonction (ou simplement utiliser le code à l'intérieur).
Vous pouvez également en faire un plugin jQuery, mais vous avez l'idée.
la source
J'ai trouvé que c'était le seul moyen fiable (puisque Chrome et FF considèrent les espaces blancs et les sauts de ligne comme des éléments):
la source
if(!$.trim($("selector").html())
if($("selector").children().length === 0)
ouif($("selector > *").length === 0)
.Les espaces blancs et les sauts de ligne sont les principaux problèmes liés à l'utilisation de: sélecteur vide. Attention, en CSS, la pseudo-classe: empty se comporte de la même manière. J'aime cette méthode:
la source
$.children()
ne renvoie pas de nœuds de texte ou de commentaire, ce qui signifie que cette solution vérifie uniquement que l'élément est vide d' éléments . Si un élément qui ne contient que du texte ou des commentaires ne doit pas être considéré comme vide pour vos besoins, vous devez utiliser l'une des autres solutions.select
éléments est parfait. la condition peut également êtreif(! $el.children().length)
.Oui, je sais, ce n'est pas jQuery, vous pouvez donc l'utiliser:
Heureux maintenant?
la source
filter
fonction jQuery car je ne voulais pas utiliser jQuery dans la fonction sauf si nécessaire.<div class="results"> </div>
, cette déclaration renvoie false. jsfiddle.net/ytliuSVN/0pdwLt46la source
this
que l'élément jQuery @ZealMurapa?Si par "vide", vous voulez dire sans contenu HTML,
la source
Vide comme dans ne contient pas de texte?
la source
En résumé, il existe de nombreuses options pour savoir si un élément est vide:
1- Utilisation
html
:2- Utilisation
text
:3- Utilisation
is(':empty')
:4- Utilisation
length
De plus, si vous essayez de savoir si un élément d'entrée est vide, vous pouvez utiliser
val
:la source
Une autre option qui devrait nécessiter moins de "travail" pour le navigateur que
html()
ouchildren()
:la source
ou
la source
Tu peux essayer:
* Remplacez les espaces blancs, au cas où;)
la source
!/[\S]/.test($('Selector').html())
fonctionnerait pas mieux, une fois que vous avez trouvé un espace, vous savez qu'il n'est pas videThe production CharacterClassEscape :: S evaluates by returning the set of all characters not included in the set returned by CharacterClassEscape :: s.
de ecma-international.org/ecma-262/5.1/#sec-15.10.2.12la source
Cherchez-vous
jQuery.isEmptyObject()
?http://api.jquery.com/jquery.isemptyobject/
la source
Voici un filtre jQuery basé sur https://stackoverflow.com/a/6813294/698289
la source
Javascript
essayez d'utiliser tout cela!
la source
Essaye ça:
la source
Les sauts de ligne sont considérés comme du contenu aux éléments dans FF.
Ex:
Dans IE, les deux divs sont considérées comme vides, dans FF an Chrome, seul le dernier est vide.
Vous pouvez utiliser la solution fournie par @qwertymk
ou
la source