2012-09-21 63 views

回答

9

這取決於你的代碼,如果你這樣做與D3,那麼你可以說

您的onmouseout事件函數裏面:

element.on("mouseout",func); 

function func(){ 
    /*do your stuff*/ 
    element.on("mouseout",null); 
} 

如果通過類似的事件屬性綁定的事件<div onmouseout="..." >那麼你必須重構這個。在這種情況下,只需使用d3 on()函數來綁定事件。

如果要將多個處理程序綁定到同一個事件,則可以使用namespacing:通過將.name附加到事件,可以更具體地解決它們。

+0

:d非常感謝你你的幫助非常有用。 –

3

我假設你添加了你的事件偵聽器d3's on event。其用於去除的事件的文檔是這樣的:

如果事件偵聽器已經註冊了 所選元素在相同類型,現有的監聽器中加入新的 聽者前除去。要爲同一事件 類型註冊多個偵聽器,該類型後面可以跟隨一個可選的命名空間,如 「click.foo」和「click.bar」。要刪除偵聽器,請將空值作爲 偵聽器。

我無法更正您的代碼,因爲您沒有添加任何代碼。

0

另一種方法是使用jQuery:

$(element).bind("mouseout", myFunction); 
$(element).unbind("mouseout"); 

jQuery unbind jQuery bind

你也可以使用一個可選的命名空間中的第一個參數,如:

"mouseout.myNamespace" 

有了這個命名空間,你可以綁定/解除綁定同一類型的多個事件。

另一件事,也許是有趣的你: jQuery stopPropagation