1

我想用类名计算每个第一个 li 元素,这是我的代码:

<div>
<ul>
    <li><a class="active" index="0" href="#">selector1</a></li>
    <li><a class="" index="1" href="#">selector1</a></li>
    <li><a class="" index="2" href="#">selector1</a></li>
</ul>
<ul>
    <li><a class="" index="0" href="#">selector1</a></li>
    <li><a class="active" index="1" href="#">selector1</a></li>
    <li><a class="" index="2" href="#">selector1</a></li>
</ul>
<ul>
    <li><a class="active" index="0" href="#">selector1</a></li>
    <li><a class="" index="1" href="#">selector1</a></li>
    <li><a class="" index="2" href="#">selector1</a></li>
</ul>
</div>

js:

var countz = $('div ul').filter(function(){
    return $(this).find('.active:first').length; }).length;

alert(countz);

但我的结果显示为 3。根据这个 html 应该是 2 有什么想法吗?谢谢!

这里小提琴:http: //jsfiddle.net/Tf7g8/

4

4 回答 4

2

像这样的东西怎么样:

var countz = $('div>ul>li:first-child>.active').length;

alert(countz);

它只计算所有a具有该类active并且是元素的子li元素的标签,这些元素本身就是第一个子元素。看起来更简单。

这里的工作示例:http: //jsfiddle.net/GRcpL/2/

于 2013-07-26T18:28:35.577 回答
0

这可以解决问题:

var countz = 0;
$('div ul li:first').find('a').each(function(){
    if($(this).hasClass("active"))
        countz++;
});

http://jsfiddle.net/jonnysooter/Tf7g8/2/

于 2013-07-26T18:28:34.650 回答
0

我会那样做。

var countz = $('div ul').filter(function(){
    return $(this).find('li:first').has('.active').length;
}).length;

alert(countz);
于 2013-07-26T18:28:52.557 回答
0

或使用Size()with nth-child()(如果使用jQuery v1.7更低版本)

var active_li_count = $('li:nth-child(1) .active').size();
alert(active_li_count);

小提琴:http: //jsfiddle.net/cQKhv/

注意: .size() 方法自 jQuery 1.8 起已弃用。请改用 .length 属性。

于 2013-07-26T18:34:59.610 回答