Javascript 如何获取按钮以单击其他按钮

Javascript 如何获取按钮以单击其他按钮,javascript,jquery,html,Javascript,Jquery,Html,我在找出这个问题时遇到了一些麻烦,我有一个按钮,它可以在页面上大量点击其他按钮。虽然问题是我不想一次激活所有的按钮,基本上直到其他按钮完成操作时才将它们超时 Page.MassCheckStats = function(){ $('[data-field="button_update_stats"]').each(function(){ $(this).click(); }); } 如何让上述代码在转到其他按钮之前一次单击3个按钮

我在找出这个问题时遇到了一些麻烦,我有一个按钮,它可以在页面上大量点击其他按钮。虽然问题是我不想一次激活所有的按钮,基本上直到其他按钮完成操作时才将它们超时

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

如何让上述代码在转到其他按钮之前一次单击3个按钮。

不必担心按钮,只需调用分配给每个按钮单击事件的函数即可


或者,如果某个按钮需要执行其他三个按钮首先执行的操作,则其功能应包含这三个功能,而不必担心按钮,您只需调用分配给每个按钮的功能单击事件


或者,如果某个按钮需要执行其他三个按钮首先要执行的操作,那么它的功能应该包含这三个功能,这听起来非常粗糙,但也许您可以附加另一个单击处理程序

$(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();

这段代码完全是临时编写的,没有经过测试。

这听起来非常粗糙,但也许您可以附加另一个单击处理程序

$(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();

此代码完全是临时的,未经测试

您可以使用如下递归超时:

对不起,我忘了一次只有三个按钮

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秒

这里是小提琴:


函数中的第一行是trenary运算符。这意味着,如果在第一次调用函数时未传递任何调用该函数的参数,则typeof button=='undefined',因此它会将jQuery选择器选择的第一个元素分配给var button-$'[data field=button\u update\u stats]'[0]。当我从超时中再次调用它时,我正在传递当前的$按钮。下一步,它将假定在参数中传递了什么。

您可以像这样使用递归超时:

对不起,我忘了一次只有三个按钮

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秒

这里是小提琴:


函数中的第一行是trenary运算符。这意味着,如果在第一次调用函数时未传递任何调用该函数的参数,则typeof button=='undefined',因此它会将jQuery选择器选择的第一个元素分配给var button-$'[data field=button\u update\u stats]'[0]。当我从超时中再次调用它时,我正在传递当前的$按钮。下一步,它将假定参数中传递了什么。

这是正确的,但在很多情况下,这些函数都是匿名函数,您确实需要触发事件…是的,这就是为什么tam的答案对我的情况没有帮助,因为我的函数是匿名的。这是正确的,但在很多情况下,这些函数是匿名函数,你真的需要触发事件…是的,这就是为什么tam的回答对我的情况没有帮助,因为我的函数是匿名的。嗯,我点击了“全部点击”按钮,什么也没发生。等等,它现在可以工作了。看起来这正是我想要的:D谢谢你教我这一点。实际上,只是为了学习,这一部分实际上做了什么:var button=typeof button=='undefined'?$'[data field=button\u update\u stats]'[0]:button;非常感谢您的帮助:嗯,我点击了“全部点击”按钮,但什么也没发生。等等,现在可以了。看起来这正是我想要的:D谢谢你教我这一点。实际上,只是为了学习,这一部分实际上做了什么:var button=typeof button=='undefined'?$'[data field=button\u update\u stats]'[0]:button;非常感谢您的帮助: