【问题标题】:Trigger click event once another trigger is complete另一个触发器完成后触发点击事件
【发布时间】:2016-02-22 15:02:09
【问题描述】:

目前我通过以下方式触发点击事件。

$( "#elem1" ).trigger( "click" );

我需要触发2个点击事件,所以我简单地复制了上面的函数如下。

$( "#elem1" ).trigger( "click" );
$( "#elem2" ).trigger( "click" );

不幸的是,在第一次点击事件完成之前调用了第二个函数。所以我尝试使用回调方法来做到这一点:

$("#elem1").trigger("click", function() {
    $( "#editLayoutButton" ).trigger( "click" );
    alert('clicked');
});

第二次点击事件从未被触发,所以我添加了一个警报功能用于调试目的。永远不会调用警报函数。

Fiddle

【问题讨论】:

  • 第一次点击事件你做了什么?通常它应该在另一行之前完成。
  • 你的演示没用。需要复现demo中的问题,即“在第一次点击事件完成之前调用第二个函数”。就这个问题而言,您当前的演示没有意义。

标签: javascript jquery triggers callback


【解决方案1】:

触发方法没有回调。

您可以使用setTimeout 来确保在第一次点击触发之后发生另一个触发。

$( "#elem1" ).trigger( "click" );
setTimeout(function(){ 
   $('#elem2').trigger('click'); 
},1);

http://api.jquery.com/trigger/


另请参阅:
How to run a callback function on a jQuery trigger("click")?
How do I detect a jquery trigger events completion?

【讨论】:

    【解决方案2】:

    不可能在触发器中放一个函数,因为它不知道点击是做什么的,所以触发器函数没有回调函数。有 2 个选项。

    1. 如果您知道完成第一个功能需要多长时间。使用setTimeout函数
    2. 使用第一次点击触发的函数并检查它是否完成并在那里触发下一次点击函数

    【讨论】:

      【解决方案3】:

      我相信您正在寻找这个:

      $("#elem1").click( function () {
          $("#elem2").trigger("click");
          alert('clicked');
      });
      

      您正在做两件不同的事情。首先是您正在观看“点击”。获得该点击后,您将“触发”另一次点击。

      【讨论】:

        猜你喜欢
        • 2012-09-24
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多