我需要在页面上的一组相邻DIVS上执行单个函数。我认为这样做最好:
function namedFunction(){
setTimeout(3000);
//do animations and such
$(this).next().call(namedFunction);
}
$("#firstdiv").call(namedFunction());
但我找不到在设定范围(firstdiv对象)中任意执行函数的方法,而且我甚至不确定范围是否会正确传递。有没有办法做到这一点,或者更好的方法来做到这一点?
答案 0 :(得分:1)
我想你想要这个:
function namedFunction () {
this.animate({ ... }, function () {
namedFunction.call( $( this ).next() );
});
}
然后:
namedFunction.call( $('#firstdiv') );
答案 1 :(得分:0)
setTimeout()
函数不会暂停当前执行,它会对您提供的函数的未来执行进行排队。在页面加载时使用文档就绪处理程序执行某些操作。
我想你想要这样的东西:
$(document).ready(function() {
var $divs = $("div.commonClass"),
i = 0;
function processNextDiv() {
namedFunction($divs.eq(i));
i = (i + 1) % $divs.length;
setTimeout(processNextDiv, 3000);
}
processNextDiv();
});
这首先选择所有div(我建议通过给它们一个公共类来做,但你可以按照自己喜欢的方式做到这一点),然后设置一个基于超时的循环,调用namedFunction()
传递它要处理的当前div。那么你可以:
function namedFunction($div) {
$div.animate(...); // process current div
}
或者您可以将动画或其他div处理代码直接放在processNextDiv()
函数中,具体取决于您是否希望能够从其他位置调用namedFunction()
。
答案 2 :(得分:-1)
也许这个?
$("#firstdiv").nextAll("div").andSelf().each(function(){
// this = DIV
});