javascript - 鼠标点击 vs jquery click vs dispatchEvent click

标签 javascript jquery html click mouseevent

谁能给我解释一下为什么实际点击鼠标 并且 $('div').click() 运行点击事件 3 次,而 $('div')[0].dispatchEvent(new MouseEvent('click')) 根据浏览器控制台仅运行 1 次点击事件?

这是一个简单的 html 代码:

<div>test</div>

这是一段javascript代码:

$('*').click(function(e){
   console.log(e); 
});

var c = new MouseEvent('click');

// Actual mouse click output event 3 times
//$('div').click(); // output event 3 times
$('div')[0].dispatchEvent(c); // output event 1 time

http://jsfiddle.net/5uvjwa4t/2/

谢谢

最佳答案

星号匹配 <html><body标签以及点击事件冒泡,当您使用星号作为事件处理程序的选择器时,它会在三个元素上触发。

$('*') // matches all elements, including html and body

$('div') // matches the DIV only

当您点击像这样嵌套的 div 时

<html>
    <body>
        <div>

点击向上移动(气泡)并触发所有父元素。

使用 dispatchEvent在 Chrome 中为我触发事件三次,但在其他浏览器中可能会有所不同。
让它始终如一地冒泡 bubbles可以设置设置,这样它就会像普通的点击和冒泡一样运行。

var c = new MouseEvent('click', {bubbles:true});

关于javascript - 鼠标点击 vs jquery click vs dispatchEvent click,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32010675/

相关文章:

JavaScript/jQuery 语法错误?

javascript - 尝试在 jQuery 中找到更好的方法

jquery - 元素上的淡出/淡入图像

php - Jquery - 隐藏/显示 - "Session"问题

html - CSS 和条码

javascript - 使用 Google map 考虑交通情况的具有多个路径点的路线规划器

javascript - 如何使用 browserify 创建的包文件?

javascript - 将括号添加到字符串数组中的最小和最大数字

Javascript 目录中的随机图像

javascript - 如何向 javascript fetch() 函数发送附加数据