我有一系列HTML元素.我正在检查数组中的前一个对象是否像这样存在:
var boxes = $('.box'); // creating the array
boxes.each(function(i){ // going through the array
var prevBox = i>0?$(boxes[i-1]):false; // check whether a previous box exists
if (prevBox) { } // do something
else { } // do something else
});
Run Code Online (Sandbox Code Playgroud)
这很好用.但是我还需要检查数组中每个第四个对象(框)的存在,或者更确切地说是对象是否存在当前对象之前的三个对象.
这不起作用:
var prevBox = i>0?$(boxes[i-4]):false;
Run Code Online (Sandbox Code Playgroud)
我相信使用jQuery.grep()和检查是否(i % 4) == 0可能是答案,但由于我对Javascript的了解有限,我不知道如何将它应用到我现在拥有的.
有人可以帮忙吗?谢谢!
gle*_*ron 16
你能不能只使用for循环?
for ( var i=0; i< boxes.length; i+=4 )
{
// do stuff with boxes[i]
}
Run Code Online (Sandbox Code Playgroud)
我对JQuery没有特别重视,但在常规JavaScript中可以正常工作.
编辑:你已经稍微重新描述了这个问题,所以你想对每一个项目采取行动,但是在第四个项目上做一些特定的事情......
var previousTop;
for ( var i=0; i< boxes.length; i++ )
{
// do stuff with boxes[i]
if ( ( (i+1) % 4 ) === 0 )
{
previousTop = boxes[i].position.top;
// do stuff with the fourth item
}
}
Run Code Online (Sandbox Code Playgroud)
previousTop在你做任何你需要做的事情之前,每四个项目就会设置更广泛的范围.然后当你到达下一个第四个元素时,你得到的是临时变量中前一个元素的值,这听起来与你在@patrick dw的答案下面的回答类似.
您可以在循环中使用模运算符来查看是否处于第四个区间。
问题得到澄清。
var boxes = $('.box'); // creating the array
boxes.each(function(i){
if( i >= 3 ) {
var prevBox = boxes.eq( i - 3 );
var pos = prevBox.position();
var top = pos.top;
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22907 次 |
| 最近记录: |