javascript - 为什么 jQuery 中的 click() 方法与 DOM click method() 的行为不同?

标签 javascript jquery

为了触发它的点击事件,我已经厌倦了在子元素上模拟点击事件,而它的父元素上也有点击事件。 起初,我认为我可以通过以下任一方式做到这一点:

document.getElementById('child').click();

或者在 jquery 中

$('#child').click();

然而,后来我发现这两种方法的行为不同。

dom 的方法按预期触发了点击事件,但 jquery 的方法触发了父元素的点击事件两次。

这是一个关于 fiddle 的例子。 https://jsfiddle.net/5t5jc7ey/

谁能解释一下为什么 jquery 会为父元素的点击事件触发两次?

最佳答案

我可以得出的结论是,父级的第一次点击是由于事件冒泡而发生的,而第二次父级触发了自己的默认点击事件,因此它再次点击。所以我通过使用 e.preventDefault();

避免了默认行为

working demo

查看代码以获得更清晰的想法:

$('#jquery').click(function() {
  $('#child').click(function(e){e.preventDefault();}).click();
});

$('#dom').click(function() {
  document.getElementById('child').click();
});

I will try to explain again:

1.The first click event of parent gets triggers due to event bubbling.

  1. Second click event of parent is due to browser's default action which you can see by clicking on the div itself. I am preventing browser default action by using e.preventDefault();

在输出中,您在我的 fiddle 中看到的父单击事件是由于事件冒泡引起的。所以它给出了所需的答案

关于javascript - 为什么 jQuery 中的 click() 方法与 DOM click method() 的行为不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38267338/

相关文章:

javascript - AngularJS 绑定(bind)到 WebGL/Canvas

javascript - 添加逗号来分割数字

javascript - JavaScript 中雅虎电子邮件 ID 验证的正则表达式

javascript - 在 C# 中,如何用 & 替换\u0026?

javascript - css-如何向图像添加动态 slider ?

javascript - CSS3 圆形菜单

带有特定文本的 jQuery 选择器 td

javascript - Outlook插件开发

javascript - 我怎样才能在这个计数器脚本的 1000 中的数字上添加逗号

javascript - 通过 jquery 检查文本字段是否为空