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
函數,創建一個click事件並分派它,結果如預期。
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()
無關。
你能解釋一下嗎?爲什麼日誌不再被調用? – Rajesh
@Rajesh沒有執行'click'事件 - 沒有'log'函數執行 – Justinas
@Justinas爲什麼'log'和'fire'被調用兩次?據你說,'log'應該只被調用過一次。但console.log顯示兩個執行:https://jsfiddle.net/wostex/82d39L4n/1/ – wostex