测试:
var btn = document.querySelector('button')
btn.addEventListener('click', log)
function log(event) {
var p = document.createElement('p')
p.textContent = event.type
document.body.appendChild(p)
fire()
}
function fire() {
btn.click()
}
<button type="button">Click me</button>
我想会抛出一个例外。单击事件处理程序中的click()
发出一个单击事件,单击事件处理程序再次调用click()
,后者再次发出一个单击事件,以此类推。但是结果和我想的不一样,它只输出两个‘点击’(IE输出一个‘点击’)。
现在,更改fire
函数,创建一个单击事件并分派它,结果与预期的一样。
var btn = document.querySelector('button')
btn.addEventListener('click', log)
function log(event) {
var p = document.createElement('p')
p.textContent = event.type
document.body.appendChild(p)
fire()
}
function fire() {
var event = new MouseEvent('click')
btn.dispatchEvent(event)
}
<button type="button">Click me</button>
我的问题是,为什么click()
的行为会有所不同?
注意到:没有使用jQuery,与jQuery方法.click()
没有任何关系。
发布于 2017-05-04 23:21:46
发布于 2017-05-04 22:57:55
您的.click()
执行与它关联的操作(如下面的链接),bud不会触发click
事件>没有再次调用log
函数,因此不会执行重复的单击事件。
在第二个版本中,您经常触发click
事件,因此您的log
函数被无限次执行。
https://stackoverflow.com/questions/43798336
复制相似问题