我正在使用自定义事件来广播导航消息(在相关插件之间)。
简单的触发代码目前如下所示:
$button.trigger('navigate', { url: link, target: target });
接收代码如下所示:
$element.on('navigate', function (e, params)
{
e.preventDefault();
e.stopPropagation();
// Do something custom here with params.url and params.target
});
问题是我还需要测试isDefaultPrevented()
发送到的事件对象trigger
。
我可以创建一个自定义事件对象并使用以下方法对其进行测试:
var eo = $.Event('navigate');
$button.trigger(eo);
if (!eo.isDefaultPrevented())
{
// Do the default actions
}
但是 jQuerytrigger()
没有同时接受 aJQueryEventObject
和参数的版本,我不知道如何通过触发器传递参数。
注意:我不想使用该e.data
属性,因为现有代码的负载期望将 params 对象作为第二个参数提供给任何事件处理程序。我更喜欢像这样工作的东西:
var eo = $.Event('navigate');
$button.trigger(eo, { url: link, target: target });
问:您如何使用自定义JQueryEventObject
并将参数传递给trigger
?
注意:我使用的是 TypeScript,所以我按照 jQuery 定义文件所说的可用。