使用jQuery触发真实事件

6
看起来 jQuery 的 trigger() 只会运行使用 jQuery 绑定的事件处理程序。我有一些使用本地浏览器事件绑定的模块。使用 https://dev59.com/Y3RB5IYBdhLWcg3w77on#2676527 中的代码对我有效,但我想知道是否有内置于 jQuery 中的东西可以做到这一点?
评论中更新:显然它适用于按钮的点击事件。但不适用于选择框上的更改事件:http://jsfiddle.net/qxpXV/2/ 记录一下:将其他库调整为使用 jQuery 进行绑定确实可以使 trigger() 正常工作,但我不想这样做。

1
@singpolyma,您所说的本地浏览器事件绑定是什么意思?是指.addEventListener()吗?我可以调用这样的处理程序:http://jsfiddle.net/mnrUt/ 哼,即使我通过onevent HTML属性指定代码,jQuery的.trigger()仍然能够运行该代码:http://jsfiddle.net/mnrUt/1/ - Šime Vidas
@adeneo 请查看我上面的两个演示。 - Šime Vidas
@ŠimeVidas - 看起来它确实可以工作,我一直以为它不会工作,因为文档说它是用于与jQuery绑定的事件,但从未真正测试过! - adeneo
@ŠimeVidas 有趣的是它适用于点击事件,但不适用于选择框的更改:http://jsfiddle.net/qxpXV/2/ - singpolyma
@singpolyma 在 Chrome 上对我有效。可能是浏览器特定的。 - user149341
@duskwuff 奇怪。我刚在最新的Chromium上测试了一下,也没能正常工作。 - singpolyma
1个回答

1

你可以通过手动在 DOM 元素上触发/分派事件(取决于浏览器,使用fireEvent / dispatchEvent)来实现此目的。代码来自这个答案将处理事件分派,您只需要针对 DOM 元素执行它,而不是 jQuery 包装器。


接受这个方法,因为我认为这似乎是唯一的方式。就我所知,jQuery并不支持这个 :) - singpolyma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接