如何在视频播放时取消绑定

时间:2012-05-24 03:48:54

标签: javascript jquery binding bind unbind

我在数组中有一组按钮,我想要它,这样当你点击一个,并且链接到的视频开始播放时,它会将click解除绑定到按钮(理想情况下为你刚才点击的那个,但我甚至无法让它为li工作。我有它

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

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

更具体一点:
问题是,只有在视频出现时才应unbind在玩,.bind("playing", function()...。我可以让它停用列表,但它应该在它之前......

2 个答案:

答案 0 :(得分:1)

你看过.unbind() doco了吗?您必须传递要解除绑定的事件的名称(尽管存在允许您传递事件对象的重载)。尝试:

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

您可以选择将对特定处理程序的引用传递给unbind:

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

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

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

答案 1 :(得分: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);
});