如何手动触发传递了多个参数的Javascript事件处理程序?

时间:2016-05-30 17:17:46

标签: javascript jquery

在Javascript应用程序中,我在运行时根据用户输入创建一个事件处理程序,如下所示:

 $( "#someElement" ).on( "click", function( e ){
     someFunction( e, param1, param2, param3 );
 });

如您所见,someFunction接受在创建事件处理程序时可用的其他参数(超出事件对象)。

如何从创建它的命名空间外部手动触发此事件处理程序?我创建了一个“虚拟”事件对象,并尝试了:

 $( "#someElement" ).trigger( "click", [dummyEventObj] );

但是,这没效果。 someFunction被调用,但param1,param2和param3不存在。有任何想法吗?

1 个答案:

答案 0 :(得分:0)

我意识到问题在于我的事件处理函数someFunction需要一些额外的逻辑来正确处理手动事件触发器。我没有向处理click事件的函数部分添加更多逻辑,而是创建了一个名为navbutton的自定义事件,并为该自定义事件添加了someFunction的逻辑。然后,我根据用户输入为该自定义事件设置了一个手动触发器,现在它运行良好。所以,MinusFour对他/她的评论是正确的:在初始化时传递给someFunction的参数总是在那里......只是正确处理手动触发的逻辑不是。