gpt4 book ai didi

jquery - 与 jquery 切片相反/选择切片之外的项目

转载 作者:行者123 更新时间:2023-12-01 00:57:24 25 4
gpt4 key购买 nike

我有一个 javascript (jQuery) 分页系统,它的工作原理是通过应用复选框的过滤器隐藏页面上的项目。它工作正常,但我现在尝试对此动态结果集进行分页,因此我想隐藏特定范围之外的所有项目。

jQuery 切片函数看起来有点适合这种情况,只是它选择范围内的所有项目。我想做的事恰恰相反。我想选择范围之外的所有项目。

HTML: 
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
<li>Item 6</li>
<li>Item 7</li>
<li>Item 8</li>
<li>Item 9</li>
<li>Item 10</li>
</ul>​

jQuery:
$(function(){
$('li').slice(3,6).css('background','#f00');
});​

我整理了一个 fiddle :http://jsfiddle.net/SLuXz/1/ - 我想做的是将项目 1、2、3、7、8、9 和 10 显示为红色。我知道我可以用两个切片(0-3 和 7-10)来完成此操作,但想知道是否有一种更简洁的方法可以使用“not”或其他核心函数之类的东西来完成此操作。

感谢大家的指点!

最佳答案

由于性能对每个人都很重要,因此 Dan 的答案绝对不应该被接受,因为它的速度大约是使用 Kevin B 的答案的三倍。

如果我们运行这段代码

var Start =  new Date().getTime();
for(i = 0; i<10000; i++){
//How Dan's answer suggests to do this
var e = $('.elem').not($('.elem').slice(0,99));
}
var Finish = new Date().getTime();
console.log('Using selector filter',Finish-Start);

var Start = new Date().getTime();
for(i = 0; i<10000; i++){
//A better way to do Dan's answer, but still twice as slow
var o = $('.elem');
var e = o.not(o.slice(0,99));
}
var Finish = new Date().getTime();
console.log('Using selector filter',Finish-Start);

Start = new Date().getTime();
for(i = 0; i<10000; i++){
//The fastest method
var e = $('.elem').filter(function(i) {
return i < 0 || i > 99;
});
}
Finish = new Date().getTime();
console.log('Using object filter',Finish-Start);

观察控制台,我们得到以下输出:

Using selector filter 989

Using selector filter 683

Using object filter 349

现在,在数据使用量非常低的情况下,这可能不是太大的问题,但在我检查可能相当多的表行的情况下,这将非常重要。

关于jquery - 与 jquery 切片相反/选择切片之外的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13070087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com