Javascript 具有作用域的JQuery命名函数
我需要在页面上的一组相邻div上执行单个函数。我认为这样效果最好:Javascript 具有作用域的JQuery命名函数,javascript,jquery,Javascript,Jquery,我需要在页面上的一组相邻div上执行单个函数。我认为这样效果最好: function namedFunction(){ setTimeout(3000); //do animations and such $(this).next().call(namedFunction); } $("#firstdiv").call(namedFunction()); $(document).ready(function() { var $divs = $("div.commo
function namedFunction(){
setTimeout(3000);
//do animations and such
$(this).next().call(namedFunction);
}
$("#firstdiv").call(namedFunction());
$(document).ready(function() {
var $divs = $("div.commonClass"),
i = 0;
function processNextDiv() {
namedFunction($divs.eq(i));
i = (i + 1) % $divs.length;
setTimeout(processNextDiv, 3000);
}
processNextDiv();
});
但是我找不到在一个集合范围(firstdiv对象)中任意执行函数的方法,而且我甚至不确定这个范围是否会被正确传递。有什么方法可以做到这一点,还是有更好的方法可以做到这一点?我想你想要这个:
function namedFunction () {
this.animate({ ... }, function () {
namedFunction.call( $( this ).next() );
});
}
然后:
namedFunction.call( $('#firstdiv') );
也许是这个
$("#firstdiv").nextAll("div").andSelf().each(function(){
// this = DIV
});
setTimeout()
函数不会暂停当前执行,它会对您提供的函数的未来执行进行排队。要在页面加载时执行某些操作,请使用文档就绪处理程序
我想你想要这样的东西:
function namedFunction(){
setTimeout(3000);
//do animations and such
$(this).next().call(namedFunction);
}
$("#firstdiv").call(namedFunction());
$(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处理代码直接放入该函数中,具体取决于您是否希望从其他位置调用namedFunction()
演示:您打算什么时候打电话?文档何时加载?关于用户操作?我以前从未任意调用过任何函数。我通常有一个原因。哟,你是GNU Linux的粉丝吗?
:)
你以一种伪方式编写了递归函数,即在函数中调用相同的函数,我想我会提到<代码>:)设置超时(3000)在all@Yatrix,当文档加载时,我想在第一个div上调用函数。然后第一个div将在它的下一个div上执行函数,并将其自身放置在div的末尾,这样函数将永远继续(我显示滑动面板),就是这样,非常好,谢谢。不过,我不太确定我是否了解发生了什么,当对分配给'this'变量的JS函数调用'call'时,第一个参数是什么?@user1681515是的。.call()
方法仅在本机函数上可用,用于显式定义调用的此
值。因此,f()
,和f.call(x)
,都在调用函数f
,但后者也定义了该函数调用的此
值。“仅在本机函数上可用”-你所说的“本机”是什么意思?@nnnnnnnn标准定义了该术语。简单来说,本机函数是继承自function.prototype
的函数。因此,本机函数保证具有.call()
方法。非本机函数不保证具有此方法。