我正在尝试使用num
类删除一些对象。
HTML:
<a class='num'>1</a>
<a class='num'>2</a>
<a class='num'>3</a>
<a class='num numa'>4</a>
<a class='num'>5</a>
<a class='num'>6</a>
<a class='num'>7</a>
<a class='num'>8</a>
<a class='num'>9</a>
<a class='num'>10</a>
但我也希望保留numa
周围的对象。
我希望在numa
加numa
之后保留三个对象和三个对象。
这是我的尝试:
<script>
var ind = $('.num:contains("4")').index();
for(i=0; i<$('.num').size(); i++)
{
if(i<ind-3 || i>ind+3) $('.page_num:eq('+ind+')').remove();
}
</script>
任何想法?
答案 0 :(得分:3)
您可以使用slice
方法并使用not
方法排除元素。在使用index
方法时,如果元素不是页面中的兄弟元素,它也会选择和删除元素。
var $e = $('a.num'),
$t = $e.filter('.numa'),
i = $e.index($t),
$k = $e.slice(i-3, i+4);
$e.not($k).remove();
编辑:
正如您的小提示所示,如果传递给slice
方法的第一个参数是负数,slice
方法不会过滤元素,您可以检查所选元素的长度,如果减法结果为负数,将其设为0。
答案 1 :(得分:1)
首先使用属性选择器获取特定锚标记的索引,然后使用.each函数迭代所有元素并使用以下逻辑删除所需的东西,试试这个,
var xIndex=$("a[class='num numa']").index()
$("a").each(function(i)
{
if(xIndex - 3 > i || xIndex + 3 < i)
{
$(this).remove();
}
})
答案 2 :(得分:0)
Try This:
var index = $(".numa").index();
$(".numa").siblings().slice(index,index + 3).remove();
$(".numa").siblings().slice(index - 3, index).remove();
答案 3 :(得分:0)
您可以使用:nth-child选择器:
var ind = $('.numa').index();
$('.num:nth-child(-n+'+(ind-3 >= 0 ? ind-3 : 0)+'), .num:nth-child(n+'+(ind+5)+')').remove();
部分ind-3 >= 0 ? ind-3 : 0
会阻止nth-child(-n+-1)
这种语法不正确的情况。
过滤方法也很有用:
var ind = $('.numa').index();
$('.num').filter(function() {
var i = $(this).index();
return i < ind - 3 || i > ind + 3;
}).remove();