当前我以以下方式触发点击事件。
$( "#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触发器事件完成?
不可能在触发器中放入函数,因为它不知道点击会做什么,所以触发器函数没有回调函数。有两种选择。
- 如果您知道完成第一个函数需要多长时间。使用
setTimeout
函数 - 使用第一次点击触发的函数,检查是否完成,然后触发下一次点击函数
我相信你正在寻找这个:
$("#elem1").click( function () {
$("#elem2").trigger("click");
alert('clicked');
});
你在做两件不同的事情。第一种是你在观察"点击"。一旦你点击了,你就"触发"了另一次点击。