0

好的,所以我正在制作一个动画菜单,可以来回滑动/扩展选项卡,并且看起来很流畅。除了解除绑定到单击选项卡的动画结束事件之外,我已经完成了所有工作。所以几乎你单击一个选项卡,在动画结束时附加一个侦听器,在单击下一个选项卡时,我想将侦听器取消绑定到先前单击的选项卡。但是,由于某种原因,我无法启动 .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
    });

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

4

2 回答 2

0

假设您将第二个参数视为选择器,那么您使用on不正确。第二个参数是一个选择器(字符串),您将在其中传递一个对象。第二个(选择器)和第三个(数据)参数是可选的。

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

不过你可以试试这个。

$menu.off('animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd');
于 2012-04-03T19:58:19.907 回答
0

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

off()方法删除了附加的事件处理程序.on()

看起来您想取消绑定以前附加到菜单的任何事件:

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

如果您只想删除您的事件,请参阅文档中的此示例

于 2012-04-03T20:11:23.350 回答