取消绑定而不是重新绑定
unbind not re-binding
我有以下代码:
$homeSlider.mouseenter(function() {
console.log('enter');
$slideInfo.animate({
'bottom': -slideInfoHeight + 'px'
});
});
$homeSlider.mouseleave(function() {
console.log('leave');
$slideInfo.animate({
'bottom': '0px'
});
});
$slideInfo.mouseenter(function() {
$homeSlider.unbind('mouseenter');
$homeSlider.unbind('mouseleave');
});
$slideInfo.mouseleave(function() {
$homeSlider.bind('mouseenter');
$homeSlider.bind('mouseleave');
})
我的slideinfodiv绝对位于homeSliderdiv的顶部。如果在homeSlider上滚动,slideinfo会隐藏自己(-slideInfoHeight),并在滚动时显示自己。如果将鼠标移动到slideInfodiv上,它将适当地保持可见,并且在展开时保持可见。但是,当您在homeSlider上回滚时,它不再隐藏slideInfo。我做错了什么?
我建议使用变量,而不是连续绑定和解除绑定:
var preventAnimation = false;
$homeSlider.mouseenter(function() {
if (preventAnimation) return;
console.log('enter');
$slideInfo.animate({
'bottom': -slideInfoHeight + 'px'
});
});
$homeSlider.mouseleave(function() {
if (preventAnimation) return;
console.log('leave');
$slideInfo.animate({
'bottom': '0px'
});
});
$slideInfo.mouseenter(function() {
preventAnimation = true;
});
$slideInfo.mouseleave(function() {
preventAnimation = false;
})
此外,您还可以了解.hover()
!
相关文章:
- 如何解绑然后再次绑定
- setTimeout vs. 事件绑定/取消绑定;什么更有效
- 取消绑定和绑定点击事件
- 挖空选择框未绑定到初始模型值,而是绑定新值
- 解绑后无法绑定
- KnockoutJS,文本与值绑定.为什么文本绑定不绑定到输入字段
- 绑定和解绑功能
- Jquery 点击事件不再绑定新创建的标签
- 如何使用敲除绑定新元素
- 无法读取属性'绑定'绑定2个函数时未定义的
- 真正阻止元素绑定-取消绑定元素-AngularJS
- 元素上单击事件的重复绑定-取消绑定
- '已结束'HTML5事件未绑定到绑定后创建的元素上
- 成功调用Ajax后将函数重新绑定到锚定标记
- Javascript重新绑定一个绑定函数
- 是否有可能强制knockout解析通过html绑定添加的新绑定?
- 动态绑定新行为
- 首先从插件中取消绑定旧的点击功能,然后绑定新的
- 如何在没有点击、聚焦等事件的情况下绑定新添加的元素?
- jQuery不绑定新创建的元素