我在解决这个问题时遇到了一些麻烦,我只有一个按钮,可以大量点击页面上的其他按钮。虽然问题是我不想同时激活所有按钮,基本上将它们暂停,直到其他按钮完成其动作。
Page.MassCheckStats = function(){
$('[data-field="button_update_stats"]').each(function(){
$(this).click();
});
}
如何让上面的代码一次点击3个按钮,然后再转到其他按钮。
答案 0 :(得分:2)
而不是担心按钮,你应该只调用分配给每个按钮的功能点击事件
或者如果某个按钮的情况需要先执行其他三个按钮的操作,则其功能应包含这3个功能
答案 1 :(得分:1)
这听起来令人难以置信的hacky,但也许你可以附加另一个点击处理程序。
$(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();
此代码完全是临时的,未经过测试
答案 2 :(得分:1)
您可以使用这样的递归超时:
(对不起,我忘了它一次只有三个按钮);
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/
函数内的第一行是一个trenary运算符。这意味着如果你没有传递调用该函数的任何参数(第一次调用它)typeof button == 'undefined'
,那么它将为var button
分配jQuery选择器选择的第一个元素 - {{1 }}。当我再次从超时中调用它时,我正在传递当前的$('[data-field="button_update_stats"]')[0]
,因此它将假设参数中传递了什么。