jquery filtrage a + pas
Ok j'ai les éléments de la liste, certains ont une durée de quelques pas.
Sur mon cas je veux ajouter la durée quand ils n'en ont pas encore.
has()
fonctionne très bien, mais not()
ajoute la durée pour les deux??
HTML:
<ul>
<li>
<p>item</p>
<span class="spn">empty span</span>
</li>
<li>
<p>item 2</p>
</li>
<ul>
<hr>
<a class="add-span"href="#">check</a>
JS:
$("a.add-span").click(function() {
$("li").each(function(index) {
//$(this).has("span").find("span").append(" - appended");
$(this).not("span").append('<span class="spn">new span<\/span>');
})
})
- Voir aussi stackoverflow.com/questions/2624832/...
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser une combinaison de la :non et :a sélecteurs comme ce
Ici est un démo http://www.jsfiddle.net/xU6fV/
has
, puisnot
). Il doit être:not(:has(xyz))
.Avec
children()
méthode, lalength
propriété est utilisée pour vérifier si oui ou non unspan
existe déjà et si ça ne marche pas, l'un est ajouté/ajouté.Plus D'Infos:
if($(this).children('span') ...
? Mais sinon, +1. Ne pense même pas à cette méthode. =)children
, je n'ai pas l'accent sur son sélecteur. MerciLa accepté de répondre fonctionne bien, si vous ne voulez pas filtrer uniquement les éléments qui ont le
span
s comme des enfants directs.Comme le
:has()
et la.has()
en boucle sur tous les descendants, pas seulement les enfants.Dans ce cas, vous devez utiliser une fonction
C'est le premier lien sur Google lors d'une recherche "jquery n'a pas". Le scénario j'avais besoin pour résoudre était un peu différent de celui-ci. J'ai dû
not
les éléments qui ont un élément du DOM, pas simplement basé sur une balise. Cela signifiait que je ne pouvais pas utiliser un sélecteur de chacune des solutions ci-dessus utilisé.de jQuery
a()
n'a cependant accepter un élément du DOM! J'ai donc créé un plugin jQuery pour combiner ces deux intégré fonctions.Je voulais le partager ici, car j'espère que ça aidera d'autres personnes dans ma situation trop. Il répond aussi à la question d'origine.
Le Plugin:
Mise en œuvre:
https://jsfiddle.net/brjkg10n/1/
J'ai été d'abord l'intention de trouver une fonction jQuery qui fonctionne comme
addBack()
mais en utilisantnot
à la place. Si vous avez besoin de quelque chose de si compliqué, alors n'hésitez pas à utiliser les plugin.Avec cela, la réponse serait:
https://jsfiddle.net/2g08gjj8/1/
Essayer cela,