jQuery comment ajouter une classe à certains des div à l'
Est-il un moyen d'ajouter une classe au moyen de jquery pour tous les divs contenant de l'ul avec un seul élément de la liste (comme la div.filter_7). Avec jQuery, j'ai besoin d'aller à travers chaque div.liste-conteneur et de compter les éléments de la liste. Si les éléments de la liste sont inférieurs à 2 jquery doit ajouter une classe.
<div class="filter_group">
<div class="filter-holder filter_1">
<h4>Test</h4>
<div class="list-container">
<ul class="list filter">
<li class="list_id1">list_id1</li>
<li class="list_id2">list_id2</li>
<li class="list_id3">list_id3</li>
<li class="list_id4">list_id4</li>
<li class="list_id5">list_id5</li>
</ul>
</div>
</div>
<div class="filter-holder filter_2">
<h4>Test</h4>
<div class="list-container">
<ul class="list filter">
<li class="list_id11">list_id11</li>
<li class="list_id22">list_id22</li>
<li class="list_id33">list_id33</li>
<li class="list_id44">list_id44</li>
<li class="list_id55">list_id55</li>
</ul>
</div>
</div>
<div class="filter-holder filter_6">
<h4>Test</h4>
<div class="list-container">
<ul class="list filter">
<li class="list_id111">list_id111</li>
<li class="list_id222">list_id222</li>
<li class="list_id555">list_id555</li>
</ul>
</div>
</div>
<div class="filter-holder filter_7">
<h4>Test</h4>
<div class="list-container">
<ul class="list filter">
<li class="list_id1111">list_id1111</li>
<li class="list_id2221">list_id2222</li>
</ul>
</div>
</div>
Voici ce que j'ai fait jusqu'à présent avec jquery, mais il semble erroné:
var total = 0;
$(document).ready(function() {
$('.list-container').each(function(idx, item){
total = $(".list-container>ul").size();
if (6 >= total) {
$('.list-container').parent('div').addClass('noshow');
} else {
alert(total);
}
});
});
Pouvons-nous présumer que chaque
Attendez... est-il "plus de deux" ou "un seul" élément de la liste. Une liste vide d'obtenir le noshow classe trop? Votre code ne correspond pas exactement à votre question.
<div>
ne pourront jamais contenir un <ul>
, ou avons-nous besoin de compte pour, disons, un <div>
qui a un <ul>
avec un seul élément et un deuxième <ul>
qui dispose de plusieurs éléments (et, si nous le faisons, cela devrait-il être caché ou pas?).Attendez... est-il "plus de deux" ou "un seul" élément de la liste. Une liste vide d'obtenir le noshow classe trop? Votre code ne correspond pas exactement à votre question.
OriginalL'auteur vangelis | 2012-03-21
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin de filtrer ou de chaque...
Vous pouvez utiliser jQuery.a() en conjonction avec
:only-child
. Comme on peut le voir dans cette jsFiddle de démonstration et de code ci-dessous.C'est FAÇON nettoyeur à lire qu'à l'aide de filtre. Vous pouvez modifier l'a un peu pour le rendre plus précis.
OriginalL'auteur scottheckel
Difficile de savoir exactement ce que vous voulez que votre texte ne correspond pas vraiment à votre code html ou exemple JS, mais essayez ceci:
Exemple - http://jsfiddle.net/infernalbadger/hyCaJ/
OriginalL'auteur Richard Dalton
Vous pouvez utiliser
.filter()
d'appliquer une logique avancée à un ensemble de résultats (retourner true maintient l'élément dans l'ensemble, tout en renvoyant false supprime de l'ensemble.Violon exemple: http://jsfiddle.net/pMvHu/1/
.filter-holder
), et non pas la liste conteneur (.list-container
). Code mis à jour.OriginalL'auteur Brad Christie
Essayer ci-dessous script,
DÉMO
OriginalL'auteur Selvakumar Arumugam
essayez d'utiliser
'.length
à la place:http://jsfiddle.net/we8Jj/
OriginalL'auteur Alex
OriginalL'auteur MightyE
Vous devez compter le
li
's dans chaqueul
.DÉMO
OriginalL'auteur Frank van Wijk
supposons que "link_shopall" est div id, puis à ajouter une classe active
Pour supprimer
OriginalL'auteur Sabir Hussain