如果JQuery没有移动,它会隐藏鼠标

Cli*_*nes 7 html javascript jquery

我试图隐藏鼠标,如果它没有移动一段时间.

这是我正在使用的代码:

$(document).ready(function() {
    var j;
    $(document).mousemove(function() {
        clearTimeout(j);
        $('html').css({cursor: 'default'});
        j = setTimeout('hide();', 1000);
    });
});

function hide() {
    $('html').css({cursor: 'none'});
}
Run Code Online (Sandbox Code Playgroud)

调用hide()函数时,光标会被隐藏,但稍后会在一瞬间取消隐藏.任何帮助表示赞赏.

mVC*_*Chr 5

您最初的问题是隐藏鼠标会触发mousemove并因此立即将其重置为默认值。所以你可以这样解决...

var justHidden = false;

$(document).ready(function() {
    var j;
    $(document).mousemove(function() {
        if (!justHidden) {
            justHidden = false;
            console.log('move');
            clearTimeout(j);
            $('html').css({cursor: 'default'});
            j = setTimeout('hide();', 1000);
        }
    });
});

function hide() {
    $('html').css({cursor: 'none'});
    justHidden = true;
}?
Run Code Online (Sandbox Code Playgroud)

... BUUUUUT ...

您在这里面临的问题目前对我而言似乎无法解决。也就是说,隐藏的鼠标mousemove永远不会触发,因此,一旦隐藏,您将无法取消隐藏它。

我将继续调查,看看是否有我找不到的解决方案。

  • @ user802519:mVChr已关闭(为此+1)。您只需要在一段时间后重设`justHidden`。请参见以下示例:http://jsfiddle.net/NmKNC/。似乎100ms的超时时间是不够的,虽然500可以正常工作。 (5认同)