我想知道是否有可能强制一个javascript事件监听器,没有条件是真的强制它执行一次然后继续监听它的条件要满足进一步执行?
答案 0 :(得分:40)
var clickFunction = function (event) {
//do some stuff here
window.removeEventListener('click',clickFunction, false );
};
window.addEventListener("click", clickFunction, false);
这将允许你触发clickFunction一次,因为闭包的魔力让removeEventListener找到了clickFunction。
不需要使用库只是为了简单地完成一些事情。
答案 1 :(得分:0)
如果将代码包装在函数中,只需在页面加载时调用函数
编辑添加示例:
不知道你的活动是什么,但这是一个例子:
<a ..onclick='someFunction()'>click</a>
<script type='text/javascript'>
function someFunction() {
// do whatever
}
// call the function
someFunction();
</script>
答案 2 :(得分:-1)
如果我正确理解你的问题,你只想一次处理一个事件(如果一个事件快速连续多次触发,你只想处理其中一个)然后一旦处理程序完成,你将继续听更多的事件。正确的吗?
jQuery有一个.one()方法api.jquery.com/one
它只处理事件一次,但是如果你在处理程序中重新绑定事件,那么它将按你的意愿运行。
function handler( )
{
// do stuff
$(this).one( 'click', handler );
}
$('.someElement').one( 'click', handler );