我试图找到这个JavaScript方法调用的jQuery等价:

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

我已经说到:

$(document).click(select_element);

但这并不能达到相同的结果,因为JavaScript方法的最后一个参数——一个布尔值,它指示事件处理程序应该在捕获阶段还是冒泡阶段执行(根据我从http://www.quirksmode.org/js/events_advanced.html的理解)——被省略了。

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


当前回答

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

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

从jQuery 1.7开始,.on()方法是 将事件处理程序附加到文档。对于较早的版本, .bind()方法用于将事件处理程序直接附加到 元素。中的当前选定元素附加处理程序 jQuery对象,所以这些元素必须存在于调用点 发生.bind()。有关更灵活的事件绑定,请参阅讨论部分 .on()或.delegate()中的事件委托。

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

其他回答

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

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

从jQuery 1.7开始,.on()方法是 将事件处理程序附加到文档。对于较早的版本, .bind()方法用于将事件处理程序直接附加到 元素。中的当前选定元素附加处理程序 jQuery对象,所以这些元素必须存在于调用点 发生.bind()。有关更灵活的事件绑定,请参阅讨论部分 .on()或.delegate()中的事件委托。

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

$(“按钮”)。On(“点击”,函数(事件){ Alert ($(this).html()); console.log(事件。目标); }); < script src = " https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js " > < /脚本> < >按钮测试1 > < /按钮 < >按钮测试2 > < /按钮

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

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

在jQuery中,最接近你所寻找的是使用bind()(在jQuery 1.7+中被on()取代)或特定于事件的jQuery方法(在本例中是click(),它在内部调用bind())。都使用引发事件的冒泡阶段。

最接近的是bind函数:

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

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