好吧,所以我正在制作一个动画菜单,来回滑动/展开标签,看起来很流畅。我已经完成了所有工作,除了解除我附加到点击标签的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
});
关于为什么关闭事件没有解雇的任何想法?
答案 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。