2011-05-13 112 views
0

使用Ext JS 4.我有一個容器內的按鈕。我希望容器能夠接收鼠標懸停,鼠標懸停和點擊事件,但該按鈕會導致鼠標懸停和鼠標懸停事件處理程序在容器上被調用兩次。我如何禁用子按鈕上的事件?禁用兒童事件

回答

2

我相信你運行到4.0的新的bubbleEvents行爲。組件現在將一些事件傳播到它們的父容器。這發生在代碼中,與DOM事件冒泡無關,在組件層次上。

http://dev.sencha.com/deploy/ext-4.0.0/docs/api/Ext.container.Container.html

最好的解決方法是簡單地停止的情況下,一旦你已經處理它。這應該防止所有冒泡,組件或DOM。對點擊事件做這件事通常是一個好主意,以確保點擊事件發生時只有一件事發生,但我不確定它適用於鼠標懸停和鼠標懸停。

panel.on('click', function(e) { 
    e.stopEvent(); 
    // do your stuff 
}); 

另一個修復你可以嘗試(我沒有)是擦拭按鈕上的bubbleEvents。

另外,可能不太可靠的解決辦法是打開事件緩衝:

el.on('click', this.onClick, this, {buffer: 10}); 

緩衝倒塌可配置的時間窗口重複事件到之一,它可用於平滑速射或重複的UI事件是非常有用的,但我我不確定它是如何起泡的。

+2

最後我發現我正在尋找mouseenter和mouseleave事件。 – chris 2011-05-16 14:34:08

2
{ 
... 
preventDefault: true, 
... 
}