2015-10-09 235 views
2

我有多個DOM元素。當每個人在窗口內都可見時,我會在該元素上發起動畫。js/jQuery:停止事件監聽器

每個元素都將窗口滾動事件註冊到同一事件處理程序,並將此元素的ID和特定於事件的回調函數傳遞給動畫。

此單個事件處理函數測試元素是否在屏幕上,如果是,則觸發回調。

但是......即使在觸發回調之後,它仍然會偵聽窗口滾動事件。我如何關閉滾動監聽器? jQuery「關閉」不起作用。

$(window).on('scroll', function() { 
    sharedFunctionsModuleName.initialAnimationWhenChartBottomVisible({ 
     chartID: chartID, 
     callbackFunction: thisWebpageModuleName.animationFunctionName 
    }); 
}); 
+1

你怎麼嘗試'關閉','$(window).off('scroll');' – Tushar

+0

嗨Tushar,是的,我試過,但是這阻止了所有元素的監聽器。我想要做的是爲每個dom元素註冊一個窗口滾動事件,然後在事件處理器觸發一次後停止該元素特定的偵聽器。 –

+0

我想這對於滾動監聽器/監聽器保持監聽不是什麼大不了的事情。看起來好像當我不再需要時,我想停止傾聽。 1個事件,1個處理程序,多個元素。 –

回答

0

只使用一個事件,而不是在

$(window).one('scroll', function() { 
    sharedFunctionsModuleName.initialAnimationWhenChartBottomVisible({ 
     chartID: chartID, 
     callbackFunction: thisWebpageModuleName.animationFunctionName 
    }); 
}); 

這第一次後自動解除綁定其激發

的文檔here

+0

@TedFitzpatrick完成這項工作? –