【问题标题】:how to unbind click while a video is playing如何在播放视频时取消绑定点击
【发布时间】:2012-05-30 15:32:12
【问题描述】:

我在一个数组中有一组按钮,我想要它,以便当您单击一个按钮时,它所链接的视频开始播放,它将click 与按钮解除绑定(理想情况下对于您只是单击,但我什至无法让它为li 工作)。我有它

$("#myVid").bind("playing", function() {
  //some stuff that happens
  $("li", ".thumbs").unbind('playVideo()')
        });

但它不起作用......我在这里做错了什么? (playVideo() 是一个已经定义的函数)

更具体一点:
问题是它应该只在视频播放时为unbind,因此.bind("playing", function()...。我可以让它停用列表,但它应该在它之前......

【问题讨论】:

  • $("li", ".thumbs").unbind(playVideo) 尝试引用函数而不是包含要评估的代码的字符串。
  • 你有多确定“正在播放”的处理程序正在执行? (如果您在 .unbind() 行之前发出警报会发生什么?)
  • @nnnnnn 我知道它正在执行,因为绑定到的其他函数(其他 div 的一些淡入淡出效果很好)
  • 如果你用 remove 调用替换 unbind,你期望的元素会消失吗
  • “我可以让它停用列表,但它应该在它之前” - 你是说代码$("li",".thumbs").unbind("click"); 将成功地从 li 元素中取消绑定点击处理程序,如果你把它放在“播放”事件处理程序之外的地方吗?

标签: javascript jquery binding bind unbind


【解决方案1】:

如果您像这样创建事件:

$("li", ".thumbs").bind("click", playVideo);

相反的做法是这样做:

$("li", ".thumbs").unbind("click", playVideo);

必须使用绑定click事件的同一个函数来移除同一个事件。

function click() {
    $("#myVid").bind("loadeddata", function() {
    $("#bigPic").addClass("move");
    $("#MyT").fadeOut(750);
            });
    playVideo( $(this).index() );
}

$('li', '.thumbs').bind('touchend click', click);

$("#myVid").bind("playing", function() {
    $('li', '.thumbs').unbind('touchend click', click);
});

【讨论】:

  • 我在bind 中有playVideo,正如你所说的那样,但在("click", function() {...} 下。那不行吗?
  • @Nata2haMayan2 - 这意味着你实际上并没有绑定playVideo,你已经绑定了一个恰好调用playVideo()的匿名函数。您不能专门取消绑定匿名函数,但可以使用 .unbind("click") 取消绑定元素上的所有处理程序(根据我的回答)。也许您可以更新您的问题以显示原始绑定语句?
  • 如果您尝试使用不同的处理程序取消绑定事件,这将不会导致任何事情发生。原始的绑定语句会有所帮助
  • 在 $("li", ".thumbs") 上设置点击事件的绑定语句
  • 是的!我意识到在你提到它之后,我明白了,所以我可以进入下一部分!太感谢了!!!! :)
【解决方案2】:

你看过.unbind() doco吗?您必须传递要取消绑定的事件的名称(尽管有一个允许您传递事件对象的重载)。试试:

$("li", ".thumbs").unbind('click');

您可以选择传递对特定处理程序的引用以解除绑定:

$("li", ".thumbs").unbind('click',playVideo);

如果您要绑定多个处理程序并且只想取消绑定特定的处理程序,则后者是必要的。

(如果您使用的是 jQuery 1.7 或更高版本,我建议您改用 .off() method。)

【讨论】:

  • 问题是它应该在视频播放时播放,因此.bind("playing", function()...。我可以让它停用列表,但它立即....
  • 我同意建议的开关方法。它增加了代码的可读性,是jquerys建议的方法
猜你喜欢
  • 2016-12-16
  • 1970-01-01
  • 2017-07-31
  • 1970-01-01
  • 2020-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多