【发布时间】:2017-05-05 06:51:44
【问题描述】:
测试:
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(),它再次调度点击事件,依此类推。但是结果和我想的不一样,它只输出了两次'click'(IE 输出了一次'click')。
现在改一下fire函数,创建一个click事件并dispatch,结果如预期。
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()无关。
【问题讨论】:
标签: javascript