jQuery不会停止在本机事件处理程序上传播`jQuery.click()`

时间:2017-06-01 14:11:35

标签: javascript jquery

我们使用jQuery.click()来模拟测试中的用户点击次数。我们注意到以下奇怪之处:<​​/ p>

即使在使用jQuery.click()时调用event.stopPropagation(),也会调用本机注册的事件处理程序。

使用原生HTMLelement.click()正确停止传播。

这是错误还是预期的行为?

实施例

给出以下HTML:

<button>Click me!</button>

以下JavaScript:

window.document.addEventListener(
  'click',
  function () {
    console.log('document clicked</li>')
  }
)

$('button').on(
  'click', 
  function (e) {
    e.stopPropagation()
    console.log('event propagation stopped</li>')
  }
)

// Using jQuery.click() method logs both, in this order:
// * event propagation stopped
// * document click
$('button').click()

// Using the native HTMLElement.click() stops the propagation of the event:
// * event propagation stopped
$('button')[0].click()

您可以在此处找到示例:https://jsbin.com/qekuda/5/edit?html,js,output

0 个答案:

没有答案