另一个触发器完成后触发单击事件

时间:2015-11-20 07:40:30

标签: javascript jquery triggers callback

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

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

我需要触发2次点击事件,所以我只需按照以下方式复制上述功能。

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

不幸的是,第一个点击事件完成之前会调用第二个函数。所以我尝试使用回调方法执行此操作:

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

第二次点击事件从未被触发,因此我添加了一个警报功能以进行调试。永远不会调用警报功能。

Fiddle

3 个答案:

答案 0 :(得分: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?

答案 1 :(得分:0)

它不可能在触发器中放置一个函数,因为它不知道点击的作用,因此触发函数没有回调函数。有两种选择。

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

答案 2 :(得分:0)

我相信你正在寻找这个:

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

你做了两件不同的事情。首先是你正在观看"点击。"点击后,您就会触发"再点击一次。