Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何解除鼠标指针(或悬停)的绑定_Jquery_Hover_Mouseenter_Unbind - Fatal编程技术网

Jquery 如何解除鼠标指针(或悬停)的绑定

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

我在任务栏上有一个“开始”按钮。将鼠标悬停在其上会显示更多选项(登录、注册、注销)。为了方便您,我还创建了一个(简化的)JSFIDLE:

问题是,我无法用鼠标访问这些进一步的选项,因为只要我将鼠标悬停在“开始”之外,选项就会消失,尽管使用了.unbind(),但显然是错误的:

$('#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();
    }
});