我们使用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()