jQuery 等效于 JavaScript 的 addEventListener 方法

IT技术 javascript jquery events event-handling dom-events
2021-01-28 06:08:59

我正在尝试找到与此 JavaScript 方法调用等效的 jQuery:

document.addEventListener('click', select_element, true);

我已经到了:

$(document).click(select_element);

但这并没有达到与 JavaScript 方法的最后一个参数相同的结果 - 一个布尔值,指示是否应该在捕获或冒泡阶段执行事件处理程序(根据我从http://www.quirksmode.org 的理解/js/events_advanced.html ) - 被排除在外。

如何使用 jQuery 指定该参数或以其他方式实现相同的功能?

6个回答

并非所有浏览器都支持事件捕获(例如,低于 9 的 Internet Explorer 版本不支持),但所有浏览器都支持事件冒泡,这就是为什么它是用于将处理程序绑定到所有跨浏览器抽象中的事件的阶段,包括 jQuery。

与您在 jQuery 中寻找的最接近的是 using bind()on()在 jQuery 1.7+ 中被取代)或特定于事件的 jQuery 方法(在这种情况下,click()bind()无论如何都内部调用)。所有都使用引发事件的冒泡阶段。

2021-04-03 06:08:59
需要明确的是,您是说 OP 想要的东西是不可能的——您必须使用冒泡,而不能使用捕获。对?
2021-04-03 06:08:59
为什么他们不支持事件捕获?事件捕获的缺点是什么?
2021-04-08 06:08:59

从 jQuery 1.7 开始,.on()现在是绑定事件的首选方法,而不是.bind()

http://api.jquery.com/bind/

从 jQuery 1.7 开始, .on() 方法是将事件处理程序附加到文档的首选方法。对于早期版本, .bind() 方法用于将事件处理程序直接附加到元素。处理程序附加到 jQuery 对象中当前选定的元素,因此这些元素必须在调用 .bind() 时存在。要获得更灵活的事件绑定,请参阅 .on() 或 .delegate() 中事件委托的讨论。

文档页面位于 http://api.jquery.com/on/

已接受的答案已被编辑以解决此问题。
2021-03-20 06:08:59

最接近的是绑定函数:

http://api.jquery.com/bind/

$('#foo').bind('click', function() {
  alert('User clicked on "foo."');
});

有一点要注意的是,jQuery的事件方法不火/陷阱loadembed包含SVG DOM其负载作为一个单独的文件标签embed的标签。我发现load在这些上捕获事件的唯一方法是使用原始 JavaScript。

这是不行的(我试过on/ bind/load方法):

$img.on('load', function () {
    console.log('FOO!');
});

但是,这有效:

$img[0].addEventListener('load', function () {
    console.log('FOO!');
}, false);
是什么$img
2021-03-19 06:08:59
应该注意的是,如果您不打算覆盖元素的任何其他绑定事件处理程序,这是正确的方法。
2021-03-30 06:08:59

您现在应该使用该.on()函数来绑定事件。