如何让一个按钮点击其他按钮
我遇到了一些麻烦,找出这个问题,我有一个按钮,它可以大量点击页面上的其他按钮。虽然问题是我不想一次激活所有按钮,并基本上将它们排除在外,直到其他按钮完成其操作。如何让一个按钮点击其他按钮
Page.MassCheckStats = function(){
$('[data-field="button_update_stats"]').each(function(){
$(this).click();
});
}
我怎样才能得到上面的代码点击3个按钮,然后再进入其他按钮。
您可以使用递归超时是这样的:
(对不起,我忘了这是在同一时间三个按钮);
Page.MassCheckStats = function(button){
var button = typeof button == 'undefined'?$('[data-field="button_update_stats"]')[0] : button;
for(var i = 0; i < 3; i++){
$(button).click();
if($(button).next().length == 0) return;
button = $(button).next();
}
setTimeout(function(){
Page.MassCheckStats($(button));
}, 1000);
}
其中1000 = 1000毫秒=1秒
和这里的拨弄它: http://jsfiddle.net/andrepadez/cR4tP/2/
函数内部的冷杉线是特雷纳里操作者。这意味着如果你没有传递任何调用该函数的参数(第一次被调用),typeof button == 'undefined'
,所以它将分配给var button
第一个由jQuery选择器选择的元素 - $('[data-field="button_update_stats"]')[0]
。当我从超时中再次调用它时,我传递当前的$(button).next()
,因此它将假定参数中传递的内容。
,而不是担心你应该只调用分配给各按钮的功能单击事件
,或者如果按钮的某个按钮需要做什么其他三个按钮先做它的情况下,它的功能应该包含那3个功能
这是正确的,但有很多情况下这些功能是匿名功能,你真的需要触发事件... – 2012-02-02 22:41:50
是的,这就是为什么谭的答案不会帮助我在我的情况,因为我的功能是匿名的。 – Novazero 2012-02-02 22:51:30
这听起来令人难以置信的黑客,但也许你可以附加另一个点击处理程序。
$(document).ready(function(){
$buttons = $('[data-field="button_update_stats"]');
// attach your original events here
for(var i = 0; i < $buttons.length-1; i++) {
$button = $($buttons.get(i));
$button.click(function(){$($buttons.get(i+1)).click();});
}
}
// to start the chain
$($('[data-field="button_update_stats"]').get(0).click();
此代码是完全的ad-hoc并没有测试
嗯,我点击了所有点击并没有发生任何事情。 – Novazero 2012-02-02 22:46:19
等待nm现在起作用。看起来这正是我想要的:D谢谢你在教我这方面的努力。 – Novazero 2012-02-02 22:46:32
如果您对代码有任何疑问,请随时询问 – 2012-02-02 22:48:22