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中删除。