Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jQuery for循环中跳过具有特定类的元素?_Javascript_Jquery - Fatal编程技术网

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

Javascript 如何在jQuery for循环中跳过具有特定类的元素?,javascript,jquery,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 clas

我有一个元素列表:

<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>
$("#wpsl-stores li").each(function (index, element) {
   if (!$(element).hasClass('skipthis')) {
      // do something
   }
});
  • 名单
  • 名单
  • 列表
  • 名单
  • 名单
  • 名单
  • 列表
  • 名单
我在元素之间循环并附加该元素的编号:

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>');    

}
var locCount=$('#wpsl存储li')。长度;
对于(i=1;i
我需要跳过包含“skipthis”类的元素

在实际站点上,具有“skipthis”类的元素被隐藏,但仍在dom中。这意味着上面的循环仍在计算它们

现在,输出是这样的:

1名单
2名单
4清单
5清单
6清单
等
等等。

我需要它

1名单
2名单
3清单
4列表

如何:

for (i = 1; i < locCount+1; i++) {
  var $listElt = $('#wpsl-stores ul li:nth-child('+i+') strong:before');
  if (!$listElt.hasClass('skipThis') {
    $listElt.hide();

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

尝试添加
。而不是

$(“#wpsl存储li”)。而不是(“.skipthis”)


来源:

您应该选择所有未跳过此项的元素并循环添加:

$('#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>');
});
$('wpsl存储li:not(.skipthis')。每个(函数(i,li){
$('body').append('wpsl存储ul-li:n子级('+(i+1)+')strong:before{content:“'+(i+1)+'”;}”);
});
编辑: 如果要删除此跳过项并为其他跳过项添加计数器:

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>');
   }
});
var listCount=0;
$(“#wpsl存储li”)。每个(函数(i,li){
if($(this.hasClass('skipthis')){
$(this.remove();
}否则{
listCount++;
$('body').append('wpsl存储ul li:n子级('+listCount+')strong:before{content:“'+listCount+'”;}”);
}
});
您可以使用
.each()
进行迭代,并使用
.hasClass()
跳过某些li元素:

<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>
$("#wpsl-stores li").each(function (index, element) {
   if (!$(element).hasClass('skipthis')) {
      // do something
   }
});

我会抓取li元素,然后使用hasClass检查它们是否是skipThis并将它们拼接出来。你能看看我更新的问题吗?你的解决方案给了我相同的输出。不,我仍然得到相同的问题。如果第二个
li
具有skipThis类,那么它将隐藏但仍在dom中。这意味着ns第三个
li
是附加“3”而不是“2”。使用remove-then将其从dom中删除。