【问题标题】:jQuery calling click multiple timesjQuery多次调用click
【发布时间】:2021-03-04 15:30:29
【问题描述】:

在这里通过 jQuery 调用点击一个元素实际上调用了 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 论坛上问过这个问题,如果不是真的问题我会删除它github.com/jquery/jquery.com/issues/216
  • 当您使用标准的 jQuery 非侵入式事件处理程序时,它可以正常工作(例如,事件只处理一次),这比内联 onclick 更好。但是我无法解释为什么会发生这种行为
  • “这只发生在最新版本的jQuery中”截至昨天最新的是3.6.0
  • 更改为$("#a")[0].click() 然后它就消失了(当然没有解释为什么它首先会这样做)
  • 你也可以做document.getElementById("a").click(),完全不用jQuery

标签: jquery


【解决方案1】:

来自 jQuery 的响应。

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

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

【讨论】:

  • 虽然在诊断方面并不完全有帮助,但这是最好的解决方案。内联事件处理程序已过时,不应使用。
  • 我发现这很有帮助。通常我们不使用它们,这是遗留代码。 stackoverflow.com/questions/5871640/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-14
  • 1970-01-01
  • 2011-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多