[英]`click()` in click event handler
測試:
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事件,單擊事件處理程序再次調用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()
無關。
您的.click()
執行與其關聯的操作(如以下鏈接),不會觸發click
事件>沒有再次調用log
功能,因此不會執行重復的點擊事件。
在第二個版本中,您會不斷觸發click
事件,因此您的log
功能會無限次執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.