我正在处理一些代码(由其他人编写),如下所示:
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
事件?这是一个有效的事件,它将如何处理?
答案 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" ] );