2011-02-02 54 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。

没有必要使用一个库来完成一些简单的事情。