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

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

我已经说到:

$(document).click(select_element);

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

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


当前回答

需要注意的一点是,jQuery事件方法不会在包含SVG DOM的嵌入标记上触发/捕获加载,SVG DOM在嵌入标记中作为单独的文档加载。我发现捕获加载事件的唯一方法是使用原始JavaScript。

这将不起作用(我已经尝试了/bind/load方法):

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

然而,这是可行的:

$img[0].addEventListener('load', function () {
    console.log('FOO!');
}, false);

其他回答

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

最接近的是bind函数:

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

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

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

需要注意的一点是,jQuery事件方法不会在包含SVG DOM的嵌入标记上触发/捕获加载,SVG DOM在嵌入标记中作为单独的文档加载。我发现捕获加载事件的唯一方法是使用原始JavaScript。

这将不起作用(我已经尝试了/bind/load方法):

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

然而,这是可行的:

$img[0].addEventListener('load', function () {
    console.log('FOO!');
}, false);

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

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