这是我试图做的事情
$('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
。它会停止正在播放的视频,但不会启动新视频...
答案 0 :(得分:2)
$('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);
答案 1 :(得分:1)
在setTimeout中,您没有将元素绑定到函数。添加您的回调函数,问题将得到解决。
setTimeout(function(){
$('li', '.thumbs').bind('touchend click', playVideo); // added callback
},5000);
请记住,无论何时重新绑定事件,都必须明确地向其传递一个函数,以便在触发事件时调用,即使您之前已经注册过该事件并在该元素的事件上调用unbind。
另外,请记住,setTimeout和setInterval回调函数具有全局范围,这意味着它们在“窗口”级别具有可见性。您需要确保函数playVideo是在全局范围内定义的,它对setTimeout可见。
答案 2 :(得分:1)
这应该有用。
$('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');