jQuery调用click多次

3

在这里通过jQuery调用元素的click事件实际上会调用它3次

这只发生在最新版本的jQuery中

$("#a").click()
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<div>
  <input type="radio" id="a" name="type" checked="checked" value="guest" onclick="alert('a')" />
  <label>A</label>
</div>
<div>
  <input type="radio" name="type" value="guest" onclick="alert('b')" />
  <label>B</label>
</div>

http://jsfiddle.net/2ra0h9ns/3/


我也在jQuery论坛上问了这个问题,如果这不是一个真正的问题,我会在那里删除它。 https://github.com/jquery/jquery.com/issues/216 - tony
1
当您使用标准的jQuery非侵入式事件处理程序时,它可以正常工作(例如,事件仅处理一次),这比内联onclick更好。但是我无法解释为什么会出现这种行为。 - Rory McCrossan
"这只发生在最新版本的jQuery中"。截至昨天,最新版本是3.6.0。 - j08691
1
改成 $("#a")[0].click() 就可以解决了(当然,它并没有解释为什么一开始会出现这个问题)。 - freedomn-m
你也可以使用document.getElementById("a").click(),完全不需要使用jQuery。 - tony
1个回答

0

jQuery 的响应。

“一般来说,内联事件处理程序非常难以使用,不应该使用。在几乎所有情况下,涉及内联事件处理程序的问题都超出了范围。内联处理程序的行为方式与使用标准 DOM addEventListener 方法添加的事件处理程序不同。”

https://github.com/jquery/jquery/wiki/Won't-Fix#inline-event-handlers


虽然在诊断方面并不是特别有帮助,但这是最佳解决方案。内联事件处理程序已经过时,不应再使用。 - Rory McCrossan
我发现这篇文章对于以下原因非常有帮助。通常我们不使用它们,因为这是遗留代码。https://dev59.com/-2025IYBdhLWcg3wqn0N - tony

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接