这是相当烦人的。我只想在javascript中触发一个事件。我需要像往常一样将事件对象传递到参数中,并额外传递一个自定义参数。
在jQuery中,这将是超级简单的:
$('#element').trigger('myevent', 'my_custom_parameter');
但是我不想使用这个方法。我发现的所有其他与此相关的问题都建议“使用jQuery!”这是我正在开发的一个插件,一个方法需要jQuery是相当愚蠢的。有人能指出一种方法在跨浏览器兼容的普通JS中完成上述操作吗?
这是相当烦人的。我只想在javascript中触发一个事件。我需要像往常一样将事件对象传递到参数中,并额外传递一个自定义参数。
在jQuery中,这将是超级简单的:
$('#element').trigger('myevent', 'my_custom_parameter');
但是我不想使用这个方法。我发现的所有其他与此相关的问题都建议“使用jQuery!”这是我正在开发的一个插件,一个方法需要jQuery是相当愚蠢的。有人能指出一种方法在跨浏览器兼容的普通JS中完成上述操作吗?
4条答案
按热度按时间z4bn682m1#
您可以创建自定义事件http://jsfiddle.net/9eW6M/
HTML语言
JS系统
点击链接后输出:
更多信息可在此处找到。
t3psigkw2#
Creating an event
To create a simple event, use the
Event
constructor.However, if you want to pass data along with the event use the
CustomEvent
constructor instead.Dispatching the event
You can then raise the event with
targetElement.dispatchEvent
.Catching the event
For older browsers( Pre-IE9)
You have to use the
document.createEvent
function.Note that this method is deprecated and should only be used for compatibility purposes.
More help : https://developer.mozilla.org/en-US/docs/Web/Guide/DOM/Events/Creating_and_triggering_events: MDN: Creating_and_triggering_events
cl25kdpy3#
事件对象和附加自定义参数
这对于原生DOM方法来说是不可能的。处理程序只使用一个参数调用,即事件对象。因此,如果有任何数据需要沿着,您需要将其作为事件对象的(自定义)属性。您可以使用DOM4
CustomEvent
constructor来实现(参见MDN文档中的跨浏览器填充程序)。然后使用
dispatchEvent
,就像您通常使用(自定义或本机)脚本触发的事件一样。smtd7mpg4#
这是相当烦人的。我想只是触发一个事件在javascript中。我需要传递事件对象到参数像往常一样和一个额外的自定义参数。
因此可以使用
prototype
扩展DOM并创建自己的方法,而不用使用jQuery(没有new customEvent()
)。这里举个例子:(或者您可以修改它并在
dispatchCustomEvent
中发送回调函数)第一个