如何在jQuery for循环中跳过具有特定类的元素?

时间:2018-02-01 20:34:31

标签: javascript jquery

我有一个元素列表:

<ul id="wpsl-stores">
    <li>list</li>
    <li>list</li>
    <li class="skipthis">list</li>
    <li>list</li>
    <li>list</li>
    <li>list</li>
    <li class="skipthis">list</li>
    <li>list</li>
</ul>

我循环遍历元素并附加该元素的编号:

var locCount = $('#wpsl-stores li').length;


for (i = 1; i < locCount+1; i++) {

    $('#wpsl-stores ul li:nth-child('+i+') strong:before').hide();

    $('body').append('<style>#wpsl-stores ul li:nth-child('+i+') strong:before {content:"'+i+'";}</style>');    

}

我需要跳过包含&#34; skipthis&#34;类。

在实际网站上,使用&#34; skipthis&#34;班级被隐藏但仍然在dom中。这意味着上面的循环仍在计算它们。

现在,输出是这样的: 1 list 2 list 4 list 5 list 6 list etc. etc.

我需要它 1 list 2 list 3 list 4 list

4 个答案:

答案 0 :(得分:0)

怎么样:

env.BN = VersionNumber([
        versionNumberString :'${BUILD_MONTH}.${BUILDS_TODAY}.${BUILD_NUMBER}', 
        projectStartDate : '2017-02-09', 
        versionPrefix : 'v1.'
    ])

reference

答案 1 :(得分:0)

尝试添加.not

$('#wpsl-stores li').not( ".skipthis" )

来源:http://api.jquery.com/not/

答案 2 :(得分:0)

您应该选择所有不跳过的元素并循环以添加:

$('#wpsl-stores li:not(.skipthis)').each(function(i,li) {
   $('body').append('<style>#wpsl-stores ul li:nth-child('+(i+1)+') strong:before {content:"'+(i+1)+'";}</style>');
});

编辑: 如果你想要删除那些,那么为其他人添加一个计数器:

var listCount = 0;
$('#wpsl-stores li').each(function(i,li) {
   if ($(this).hasClass('skipthis')) {
      $(this).remove();
   } else {
      listCount++;   
      $('body').append('<style>#wpsl-stores ul li:nth-child('+listCount+') strong:before {content:"'+listCount+'";}</style>');
   }
});

答案 3 :(得分:0)

您可以使用.each()进行迭代,.hasClass()可以跳过一些li元素:

$("#wpsl-stores li").each(function (index, element) {
   if (!$(element).hasClass('skipthis')) {
      // do something
   }
});