为什么不是.is(“:hover”)工作?

时间:2012-09-30 05:49:29

标签: javascript jquery hover

我有这段代码可以在您不移动鼠标一秒钟之后淡出页面上的一些内容:

idleTime = 0;
var idleInterval = setInterval(function() { 
    idleTime++;
    if (idleTime > 1) {
        var isHovered = $('.fade-outs').is(":hover");
        if(isHovered == false) {
            $('.fade-outs').stop().fadeOut();
        }
    }
}, 1000);
$(document).bind('mousemove mousedown', function(e) {
    idleTime = 0;
    $('.fade-outs').fadeIn();
});

但是,我在$('.fade-outs').is(":hover");部分收到以下错误:

  

错误:语法错误,无法识别的表达式:hover [http:// localhost:5545 / assets / js / jquery.min.js:3]

有谁知道我收到此错误的原因?

2 个答案:

答案 0 :(得分:3)

我会尝试这样的事情:

var idleTimer;

function startTimer() {
    stopTimer();

    idleTimer = setInterval(function() {
        $('.fade-outs').stop().fadeOut();
    }, 1000);
}

function stopTimer() {
    idleTimer && clearInterval(idleTimer);
}

$(document).on('mousemove', startTimer);

$('.fade-outs').on({
    mouseleave: startTimer,
    mouseenter: stopTimer,
    mousemove: function(e) {
        e.stopPropagation();
    }
});​

演示:http://jsfiddle.net/Blender/urzug/4/

答案 1 :(得分:1)

尝试将其更改为:

idleTime = 0;
var idleInterval = setInterval(function() { 
idleTime++;
if (idleTime > 1) {
    var isHovered = $('.fade-outs').is(".hover");
    if(isHovered == false) {
        $('.fade-outs').stop().fadeOut();
    }
}
}, 1000);
$(document).bind('mousemove mousedown', function(e){
  idleTime = 0;
  $('.fade-outs').fadeIn();
});
$('.fade-outs').hover(funciton() { $(this).toggleClass('hover') });