Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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 如果div不是触发元素的子元素,则在悬停时保持div的可见性_Jquery_Jquery Hover - Fatal编程技术网

Jquery 如果div不是触发元素的子元素,则在悬停时保持div的可见性

Jquery 如果div不是触发元素的子元素,则在悬停时保持div的可见性,jquery,jquery-hover,Jquery,Jquery Hover,我有一个简单的悬停脚本: $('#loginbutton').hover( function () { $('#loginform').stop().fadeIn('fast'); }, function () { $('#loginform').stop().fadeOut('fast'); } ); 不幸的是,#loginform不是#loginbutton的子项,尽管两个div重叠 如果鼠标离开#登录按钮并移动到#登录表单上,有没有办法保持#登录表单的可见

我有一个简单的悬停脚本:

$('#loginbutton').hover(
  function () {
    $('#loginform').stop().fadeIn('fast');
  },
  function () {
    $('#loginform').stop().fadeOut('fast');
  }
);
不幸的是,
#loginform
不是
#loginbutton
的子项,尽管两个div重叠

如果鼠标离开
#登录按钮
并移动到
#登录表单
上,有没有办法保持
#登录表单
的可见性


小提琴:

有点黑,但我想我明白了:

使用计时器

$('#loginbutton').hover(
    function () {
        $('#loginform').stop().fadeIn('fast');
    },
    function () {
        var timer = setTimeout(function(){
            $('#loginform').stop().fadeOut('fast');
        }, 200);
        $('#loginform').data('hidetimer', timer)
    }
);

$('#loginform').hover(function(){
    clearTimeout($(this).data('hidetimer'));
}, function(){
    $(this).stop().fadeOut('fast');
})

演示:

请也添加HTML。或者创建一个JSFIDLE。
$('#loginbutton').hover(
    function () {
        $('#loginform').stop().fadeIn('fast');
    },
    function () {
        var timer = setTimeout(function(){
            $('#loginform').stop().fadeOut('fast');
        }, 200);
        $('#loginform').data('hidetimer', timer)
    }
);

$('#loginform').hover(function(){
    clearTimeout($(this).data('hidetimer'));
}, function(){
    $(this).stop().fadeOut('fast');
})