jQuery:选择带切片的元素

时间:2017-01-11 09:20:45

标签: javascript jquery

在一个页面中我有不同的divs元素具有相同的类

<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'与0,9 div的div 0。
  • 在.slice(9,11)的情况下,我想选择而不是 不存在的div'10','11'div 0,1与9 div。

我怎样才能做到这一点?我可以用切片做或者我应该使用其他功能吗?

提前感谢所有帮助。

2 个答案:

答案 0 :(得分:2)

你可以像这样递增你的变量,

var elements = $("#masterdiv").find('.a');

  /* where points.f = 0 and points.l = 3 */
var t = setInterval(function () {
 var currentElements;
  
  if(points.l > elements.length && points.f<=elements.length){
    tempArr1 = elements.slice(points.f);
    tempVar = points.l % elements.length;
    tempArr2 = elements.slice(0,tempVar);
    currentElements = [...tempArr1,...tempArr2];
    
  }
  else{
   currentElements = elements.slice(points.f, points.l); 
  }
  
  /* do something with currentElements then increment points.f and points.l +1 */  

}, xinterval );

我没有报道边缘情况,请找到你自己;)

答案 1 :(得分:2)

另一种方法是使用pop()和push()数组函数,如下所示:

~$ jupyter nbextension enable pep8_magic.py --user
Enabling notebook extension pep8_magic.py...
      - Validating: problems found:
        - require?  X pep8_magic.py

以下是codepen演示:http://codepen.io/kostasx/pen/mRVzqQ?editors=0010