我想点击一个按钮,在点击5秒后触发一个功能,除非再次点击它,在这种情况下计数器重新启动.
var timeoutId; function dummyFunction(this){ console.log(this); console.log('FIRING'); } $(function(){ $('#some-button').click(function(){ clearTimeout(timeoutId); timeoutId = setTimeout( dummyFunction(this), 5000 ); }); });
但是当我点击时#some-button
,dummyFunction()
立即开火而不是五秒钟后开火.
为什么这样做?它是一个jQuery的东西?如果是这样,那么解决方法是什么?
您正在运行您的函数,而不是将其作为参数传递.
试试这个:
timeoutId = setTimeout( dummyFunction.bind(this), 5000 );
注意:如果要this
作为实际参数传递,请使用:dummyFunction.bind(this, this)