2013-05-06 28 views
0

我可以在同一個元素上附加捕獲和冒泡階段事件處理程序(可以是不同的或相同的函數)嗎?我可以在同一個元素上附加捕獲和冒泡階段事件處理程序嗎?

我試過了,它工作正常。

根據W3C允許嗎? 我沒有看到任何DOM3事件規範中提到的限制或限制。

有人請澄清一下嗎?

var divList = document.getElementsByTagName('div'); 
var eventHandler = function(event){ 
console.log(event.currentTarget); 
} 
for(var index=0; index < divList.length; index++){ 
divList[index].addEventListener('click',eventHandler,true); 
divList[index].addEventListener('click',eventHandler,false); 
} 
+1

兩者都有什麼意義? – 2013-05-06 15:15:33

回答

1

是的,綁定到兩個階段的事件是allowed。這裏有一個少數情況下,這是非常有用的:

  • 表單字段的綱領性填充
  • 形式的綱領性排隊事件提交
  • 多個選擇元素

一些事件的綱領性同步,如重點,不要泡,但可以被捕獲。 目標元素上的內聯處理程序在捕獲目標元素的處理程序之前觸發。

Web平臺中的許多新指定的事件(如媒體事件)不會冒泡,這對依賴於事件委託的Ember框架是一個問題。但是,IE9中添加的捕獲API會針對所有事件正確調用,並且不需要規範化層。不僅支持捕獲API,我們可以放棄jQuery依賴,但它可以讓我們正確處理這些非冒泡事件。這將允許您使用事件,如在組件中播放而無需手動設置事件偵聽器。

參考

0

是的,但它應該被勸阻,你應該處理邏輯觸發其他事件/調用函數回調。

很少有一個用例需要多個相同事件類型的元素。

相關問題