在一个页面中,我有具有相同类的不同 div 元素
<div id="masterdiv">
<div class="a"></div>
<div class="a"></div>
<div class="a"></div>
<div class="a"></div>
<div class="a"></div>
<div class="a"></div>
<div class="a"></div>
<div class="a"></div>
<div class="a"></div>
<div class="a"></div>
<div>
通过 setTimeout,我想获取三个元素的时间,对它们进行一些操作。
我尝试使用切片函数:
var elements = $("#masterdiv").find('.a');
var t = setInterval(function () {
var currentElements = elements.slice(points.f, points.l);
/* where points.f = 0 and points.l = 3 */
/* do something with currentElements then increment points.f and points.l +1 */
}, xinterval );
但是有一个问题,在某个时间我的代码将到达 .slice(8,10)/.slice(9,11) 和 11 个 div 的选择。
所以在这些情况下(point.l > elements.length()
)我想选择第一个div而不是超出的div:
- 对于 .slice(8,10) 我想选择而不是 不存在的 div '10' div 0 和 8,9 div 。
- 对于 .slice(9,11) 我想选择而不是 不存在 div '10','11' div 0,1 和 9 div。
我怎样才能做到这一点?我可以用切片来做还是应该使用其他函数?
预先感谢您的所有帮助。
最佳答案
另一种方法是使用 pop() 和 push() 数组函数,如下所示:
var $elements = $("#masterdiv").find('.a');
// Convert to native Array
var elements = Array.prototype.slice.apply($elements);
var t = setInterval(function () {
elements.slice(points.f,points.l).forEach(function(el){
// do something on the element...
$(el).addClass('debug');
});
elements.push(elements.shift()); // Re-arrange elements array for loop
}, xinterval );
这是 codepen 演示:http://codepen.io/kostasx/pen/mRVzqQ?editors=0010
关于javascript - jQuery:使用切片选择元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41586882/