2011-02-02 38 views
15

我想知道是否有可能強制一個JavaScript事件監聽器,如果沒有條件是真的迫使它執行一次,然後繼續聆聽它的條件,以滿足進一步執行?強制JavaScript EventListener執行一次?

+0

「沒有條件成真」......有什麼條件?而且,如果它會射擊一次,然後繼續聆聽,那麼大概會再次射擊,然後......它不會射擊一次。除非你的意思是你只想一次處理1個事件(不是多個同時發生的事件)? – KOGI 2011-02-02 19:17:19

+0

您使用的是JavaScript框架嗎?我認爲在ExtJS中是可能的。在jQuery中也許也是。 – Marc 2011-02-02 19:17:47

+0

jQuery有一個.one()方法,但我不確定它是不是你想要的。雖然,你可以重新綁定處理程序中的事件。這會產生不處理同時事件的效果,然後在處理程序完成後,再次開始監聽事件。 http://api.jquery.com/one/ – KOGI 2011-02-02 19:19:42

回答

0

如果你在一個功能包的代碼,只需調用在頁面加載的功能

編輯追加例如:

不知道你的事件,但在這裏有一個例子:

<a ..onclick='someFunction()'>click</a> 

<script type='text/javascript'> 
function someFunction() { 
    // do whatever 
} 

// call the function 
someFunction(); 
</script> 
-1

如果我正確理解你的問題,你一次只想處理一個事件(如果一個事件連續多次觸發,你只想處理其中一個事件),那麼一旦處理程序完成,你將繼續聽取更多的事件。正確?

jQuery有一。一()方法api.jquery.com/one

只處理該事件一次,但如果你的事件處理程序重新綁定,那麼它將作爲你想要的。

function handler() 
{ 
    // do stuff 

    $(this).one('click', handler); 
} 

$('.someElement').one('click', handler); 
34
var clickFunction = function (event) { 
    //do some stuff here 
    window.removeEventListener('click',clickFunction, false); 

}; 
window.addEventListener("click", clickFunction, false); 

這將讓你火了clickFunction一次,因爲封閉的魔力讓removeEventListener找到clickFunction。

沒有必要使用一個庫來完成一些簡單的事情。