2016-12-13 138 views
0

我會嘗試解釋我的問題。我使用的是mouseup事件偵聽器,因此無論何時執行單擊操作並且目標不是所需的元素,都可以進行檢查。這是我使用的代碼:jQuery - 元素「文檔」的註冊/取消註冊監聽器

function clickOutListener(element, callbackFunction){ 

    $(document).mouseup(function(e){ 

     if(!$(element).is(e.target) && $(element).has(e.target).length === 0) callbackFunction.call(this, null); 

    }); 
} 

正如你所看到的,事件偵聽器綁定到全球文檔元素和取消綁定聽衆的辦法是:

$(document).off("mouseup"); 

這裏來我需要實現的。如果我解除綁定mouseup偵聽器,它將影響使用此偵聽器的其他元素(下拉列表和其他功能)。我必須猜測,每次我註冊一個偵聽器時,它都不會覆蓋以前定義的偵聽器,而是添加定義的目標函數。

如何爲同一個聽衆訪問不同的定義目標函數?

$(document).mouseup(funct1); 
$(document).mouseup(funct2); 
$(document).mouseup(funct3); 

您將如何取消註冊只爲「funct2」註冊的偵聽器?

預先感謝您。

+0

看到你正在使用jQuery,看看事件命名空間,這可能會有所幫助►https://api.jquery.com/event.namespace/ – Nope

回答

2

使用.on()語法時,您可以命名空間事件。

$(document).on('mouseup.myNamespace', function(e){ ... } 

這可以讓你的命名空間,而把其他人到位刪除事件。

$(document).off('mouseup.myNamespace');