如何获得一个按钮来单击其他按钮

时间:2012-02-02 21:56:27

标签: javascript jquery html

我在解决这个问题时遇到了一些麻烦,我只有一个按钮,可以大量点击页面上的其他按钮。虽然问题是我不想同时激活所有按钮,基本上将它们暂停,直到其他按钮完成其动作。

Page.MassCheckStats = function(){
        $('[data-field="button_update_stats"]').each(function(){
            $(this).click();
        });
    }

如何让上面的代码一次点击3个按钮,然后再转到其他按钮。

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],因此它将假设参数中传递了什么。