jQuery触发器()与自定义事件?

时间:2013-12-18 01:25:11

标签: javascript jquery

我正在处理一些代码(由其他人编写),如下所示:

var _layoutRoot = $("#whatever");

eventName = 'CopyArticle';
eventData = { targetArticleIds: selectedArticleIds, targetCategoryIds: selectedCategoryIds };

// fire the event
if (eventName) // null is unexepcted here
    _layoutRoot.trigger(eventName, eventData);

我对这意味着什么并不了解。

我可以看到trigger导致命名事件发生。但是从什么时候开始有JavaScript CopyArticle事件?这是一个有效的事件,它将如何处理?

3 个答案:

答案 0 :(得分:1)

jQuery允许您触发任何名称的事件

$(".foo").on("some:custom:event", function(event) {
  console.log("hello");
});

$(".foo").trigger("some:custom:event");

// hello

答案 1 :(得分:1)

只需将自定义事件附加到on的元素即可。要使用trigger触发事件。您可以使用数组将额外的参数传递给触发器函数。

<强> HTML

<div id="test"></div>

<强> JS

$("#test").on("customEvent", function(e,msg){
  alert(msg);
});
var dataToPass = "This is a msg";
$("#test").trigger("customEvent", [dataToPass]);

JS小提琴: http://jsfiddle.net/85wjt/1/

答案 2 :(得分:1)

根据jquery website

  

当我们使用.on()方法定义自定义事件类型时,第二个   .trigger()的参数可以变得有用。例如,假设我们有   将自定义事件的处理程序绑定到我们的元素而不是   内置点击事件,如上所述:

$( "#foo" ).on( "custom", function( event, param1, param2 ) {
  alert( param1 + "\n" + param2 );
});
$( "#foo").trigger( "custom", [ "Custom", "Event" ] );