Jquery 如何解除鼠标指针(或悬停)的绑定
我在任务栏上有一个“开始”按钮。将鼠标悬停在其上会显示更多选项(登录、注册、注销)。为了方便您,我还创建了一个(简化的)JSFIDLE: 问题是,我无法用鼠标访问这些进一步的选项,因为只要我将鼠标悬停在“开始”之外,选项就会消失,尽管使用了.unbind(),但显然是错误的:Jquery 如何解除鼠标指针(或悬停)的绑定,jquery,hover,mouseenter,unbind,Jquery,Hover,Mouseenter,Unbind,我在任务栏上有一个“开始”按钮。将鼠标悬停在其上会显示更多选项(登录、注册、注销)。为了方便您,我还创建了一个(简化的)JSFIDLE: 问题是,我无法用鼠标访问这些进一步的选项,因为只要我将鼠标悬停在“开始”之外,选项就会消失,尽管使用了.unbind(),但显然是错误的: $('#logout').on({ mouseenter: function(){ $('#start').unbind(); //this is supposed to unbind 1. but it does
$('#logout').on({
mouseenter: function(){
$('#start').unbind(); //this is supposed to unbind 1. but it doesn't!!!
} //more code goes here
(JSFIDLE中的代码行29)
我知道我可以简单地将更多选项(“.start_options”)作为“.taskbar”相对定位的子元素,并设置动画使其滑出任务栏的左侧;然而,任务栏的“overflow-y:scroll;”-属性阻止了这一点,出于某种原因,它还阻止了“overflow-x”
因此,我完全定位了进一步的选项,并在将鼠标悬停在“开始”按钮上时显示它们,但是当鼠标悬停在“#开始”按钮上时(JSFIDLE中的“mouseleave”)如何防止/解除绑定它们被隐藏呢
非常感谢 无需解除任何绑定,您可以将另一个悬停绑定到滑块,效果良好
$('.start_options').bind({
mouseleave: function () {
var $start = $(this),
startOffset = $start.offset();
$slider = $('.start_options');
$slider.css({
position: 'absolute',
top: startOffset.top,
left: startOffset.left - ($slider.width()) + 10
});
$slider.hide();
},
mouseenter: function (e) {
$slider.show();
}
});
来自jQuery文档:从jQuery 1.7开始,.on()方法是将事件处理程序附加到文档的首选方法。对于早期版本,.bind()方法用于将事件处理程序直接附加到元素。处理程序附加到jQuery对象中当前选定的元素,因此这些元素必须在调用.bind()时存在。有关更灵活的事件绑定,请参阅或中关于事件委派的讨论。
$('.start_options').bind({
mouseleave: function () {
var $start = $(this),
startOffset = $start.offset();
$slider = $('.start_options');
$slider.css({
position: 'absolute',
top: startOffset.top,
left: startOffset.left - ($slider.width()) + 10
});
$slider.hide();
},
mouseenter: function (e) {
$slider.show();
}
});