有没有办法通过jquery将类添加到包含ul的所有div中,只有一个列表元素(如div.filter_7)。使用jQuery,我需要遍历每个div.list-container并计算列表元素。如果列表元素低于2,那么jquery应该附加一个类。
<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>
这是我到目前为止用jquery做的,但似乎错了:
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);
}
});
});
答案 0 :(得分:6)
您不需要过滤或每个......
您可以将jQuery.has()与:only-child
结合使用。可以在下面的this jsFiddle演示和代码中看到。
jQuery("div.list-container").has("li:only-child").addClass("noshow");
WAY 清洁阅读比使用过滤器更清洁。您可以修改一下以使其更具体。
答案 1 :(得分:3)
很难找到你想要的东西,因为你的文字根本不匹配你的HTML或示例JS,但试试这个:
$('div.filter-holder').filter(function() {
return $(this).find('li').length == 1;
}).addClass('noshow');
答案 2 :(得分:1)
$('div.filter-holder').filter(function(){
return $('div.list-container li',this).length <= 2;
}).addClass('noshow');
您可以使用.filter()
将更高级的逻辑应用于结果集(返回true将元素保留在集合中,而返回false则将其从集合中删除。
答案 3 :(得分:0)
尝试以下脚本,
$('.filter-holder').filter (function () {
return ($(this).find('ul li').length == 1) //Edit: changed to ==
}).addClass('noshow');
答案 4 :(得分:0)
尝试使用'.length
代替:
$('.list-container').each(function(){
if ($('li', this).length <= 2) {
$(this).parent().addClass('noshow');
}
});
答案 5 :(得分:0)
$('div.list-container').each(function() {
if ($(this).find('ul').length >= 6) {
$(this).addClass('noshow');
}
});
答案 6 :(得分:0)
您必须计算li
中的ul
。
$('div.filter-holder ul').each(function() {
if($(this).children().length == 1)
{
$(this).parent().parent().addClass('test')
}
});
答案 7 :(得分:0)
假设“link_shopall”是div id,然后添加类激活
$('#link_shopall').classList.add('active')
删除
$('#link_shopall').classList.remove('active')