Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery:一个接一个地触发.click()事件_Jquery - Fatal编程技术网

jQuery:一个接一个地触发.click()事件

jQuery:一个接一个地触发.click()事件,jquery,Jquery,我有一种情况,我必须在一个页面上执行多个操作才能初始化它的设置。我还没有任何代码,因为坦率地说,我很难找到一个地方开始它 以下是我想做的: jQuery(document).ready(function($) { $('#element-one').trigger('click'); // wait for the first trigger event to complete (it loads ajax content into a div tag) // then

我有一种情况,我必须在一个页面上执行多个操作才能初始化它的设置。我还没有任何代码,因为坦率地说,我很难找到一个地方开始它

以下是我想做的:

jQuery(document).ready(function($) {

    $('#element-one').trigger('click');
    // wait for the first trigger event to complete (it loads ajax content into a div tag)
    // then move on to this one...
    $('#element-two').trigger('click');
    // then move on to this one...
    $('#element-three').trigger('click');
    // then move on to this one...
    $('#element-four').trigger('click');
    // then finally move on to the last one
    $('#element-five').trigger('click');

});

这是如何实现的?

在第一个处理程序中,您可以使用延迟对象,在ajax成功回调中解析它,并返回一个承诺,这样您就可以像这样链接代码(我还没有测试过)

在版本1.5中引入的jQuery.Deferre()是一个可链接的实用程序对象,它可以将多个回调注册到回调队列中,调用回调队列,并中继任何同步或异步函数的成功或失败状态


注意:我使用了
triggerHandle()
而不是
trigger()
:只是为了对附加处理程序的元素不可知。如果适合您的需要,也可以使用
trigger()

您考虑过在AJAX回调中调用其他触发器吗?为什么不创建一个Init()函数,在页面加载后调用它,它将调用在单击事件中调用的所有函数
 $.when(
    $('#element-one').triggerHandler('click') /* asynchronous task */
 ).done(function() {
     $('#element-two').triggerHandler('click') /* synchronous task */
     ...
     $('#element-five').triggerHandler('click') /* synchronous task */
 })