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



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

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

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

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

不幸的是,第二个函数在第一次单击事件完成之前被调用。所以我尝试使用一种回调方法:

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

第二次点击事件从未被触发,所以我添加了一个警报函数用于调试。警报函数从未被调用。

Fiddle

触发器方法没有回调。

您可以使用setTimeout来确保其他触发器发生在第一次单击触发器之后。

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

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


另请参阅:
如何在jQuery触发器上运行回调函数("单击")?和
如何检测jquery触发器事件完成?

不可能在触发器中放入函数,因为它不知道点击会做什么,所以触发器函数没有回调函数。有两种选择。

  1. 如果您知道完成第一个函数需要多长时间。使用setTimeout函数
  2. 使用第一次点击触发的函数,检查是否完成,然后触发下一次点击函数

我相信你正在寻找这个:

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

你在做两件不同的事情。第一种是你在观察"点击"。一旦你点击了,你就"触发"了另一次点击。

最新更新