.off没有取消绑定animationend事件

时间:2012-04-03 19:56:30

标签: jquery css3 css-animations

好吧,所以我正在制作一个动画菜单,来回滑动/展开标签,看起来很流畅。我已经完成了所有工作,除了解除我附加到点击标签的animationend事件。因此,您几乎单击一个选项卡,在动画结束时附加一个侦听器,在单击下一个选项卡时,我想将侦听器解除绑定到之前单击的选项卡。但是,由于某种原因,我无法启动.off功能。这是我的代码

var $featuredTab = this.$('.featured'),
    $tabContainer = $(e.target).parent(),
    $menu = this.$el,
    index = $tabContainer.index(),
    count = $tabContainer.parent().children().length; 

    if($featuredTab.length > 0) {
        $menu.off('animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd', $featuredTab, function() {
            console.log('off');
            //do stuff
        });
    }

    $tabContainer.addClass('featured');


    $menu.on('animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd', $tabContainer, function(e) {
            console.log(e.originalEvent);
            //do stuff
    });

关于为什么关闭事件没有解雇的任何想法?

2 个答案:

答案 0 :(得分:0)

假设您将第二个参数视为选择器,那么您错误地使用了on。第二个参数是传递对象的选择器(字符串)。第二个(选择器)和第三个(数据)参数是可选的。

看看这里 - http://api.jquery.com/on/

但是你可以试试这个。

$menu.off('animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd');

答案 1 :(得分:0)

因为off()不会触发事件。

  

off()方法会删除附加了.on()

的事件处理程序

看起来您想解除之前附加到菜单上的所有事件:

// this removes ALL events
$menu.off('animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd');

如果您只想删除自己的活动,请参阅文档中的this example