[英]can I reset an unbinded function with setTimeout?
天哪,我在这里很多......不管怎样,这都是问题所在。 我有一个解除绑定的功能,我需要它在一段时间后回来(最好是当视频停止播放时,但现在我只需要一定的秒数)。
我在这里找到了一个类似我的问题的人(在jquery论坛上) ,当我尝试应用解决方案(第一个响应)时,它没有用。 这就是我试图做的事情 $('li', '.thumbs').bind('touchend click', playVideo); $('li', '.thumbs').bind('touchend click', function() { //some code playVideo( $(this).index() ); $("li", ".thumbs").unbind('click'); setTimeout(function(){ $('li', '.thumbs').bind('touchend click'); },5000); });
所以为什么?
**编辑好吧,我得到了绑定以超时回来,但由于某种原因,它没有完成功能playVideo
。
它会停止正在播放的视频,但不会启动新视频...
$('li', '.thumbs').bind('touchend click', onPlayClick);
function onPlayClick(){
//some code
playVideo( $(this).index() );
$("li", ".thumbs").unbind('click', onPlayClick);
setTimeout(function(){
$('li', '.thumbs').bind('click', onPlayClick);
},5000);
}
此外,如果您使用的是jQuery 1.7+,则首选on()
/ off()
。 例:
$('li', '.thumbs').on('click', onPlayClick);
$('li', '.thumbs').off('click', onPlayClick);
在setTimeout中,您没有将元素绑定到函数。 添加您的回调函数,问题将得到解决。
setTimeout(function(){
$('li', '.thumbs').bind('touchend click', playVideo); // added callback
},5000);
请记住,每当您重新绑定一个事件时,您必须显式传递一个函数,以便在触发事件时调用,即使您之前已经注册过该事件并在该元素的事件上调用unbind也是如此。
另外,请记住setTimeout和setInterval回调函数具有全局范围,这意味着它们在“窗口”级别具有可见性。 您需要确保函数playVideo是在全局范围内定义的,它对setTimeout可见。
这应该工作。
$('li', '.thumbs').bind('touchend click', playVideo);
$('li', '.thumbs').bind('touchend click', function() {
//some code
playVideo( $(this).index() );
setTimeout(function(){
$('li', '.thumbs').unbind().bind('touchend click',playVideo);
},5000);
});
因为,在这种情况下,每次设置超时时,您必须取消绑定先前绑定的函数然后绑定。同时绑定时必须有回调函数。
或者,如果您知道在哪里单击,则可以触发Click而不是绑定。
对于Eg,如果要点击类拇指。 Theen
$('.thumbs').trigger('click');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.