如何使用jQuery和setTimeout函数淡出?

如何使用jQuery和setTimeout函数淡出?,jquery,Jquery,我试图在一段时间后通过setTimeout函数将对象淡出。我试过这个: var timer; $(window).on('mousemove', function () { $("#my_div_id").fadeIn(1900) $('#my_div_id').addClass('show'); try { clearTimeout(timer); } catch (e) {} timer = setTimeout(function ()

我试图在一段时间后通过
setTimeout
函数将对象淡出。我试过这个:

var timer;
$(window).on('mousemove', function () {
    $("#my_div_id").fadeIn(1900)
    $('#my_div_id').addClass('show');
    try {
        clearTimeout(timer);
    } catch (e) {}
    timer = setTimeout(function () {    
        $('#my_div_id').fadeOut(1900).removeClass('show');   
    }, 5960); 
});
基本上,当您不移动鼠标时,jQuery会隐藏
my\u div\u id
,当您移动鼠标时,它会显示div并正确地淡入

为什么
.fadeOut(1900)
不起作用?

试试,不要测试

var timer;
$(window).on('mousemove', function () {
$("#my_div_id").fadeIn(1900)
$('#my_div_id').addClass('show');
try {
    clearTimeout(timer);
} catch (e) {}
    timer = setTimeout(function () {    
    $('#my_div_id').fadeOut(1900,function() {   
   $(this).removeClass('show');
    });   
  }, 5960); 
});

每次鼠标移动时,您都在创建同一个jQuery对象并调用fadein动画,这在性能方面不是很好

因此,您可以将不透明度移动到CSS并缓存jQuery对象

var定时器,
$myId=$('my#div_id');
$(窗口).on('mousemove',函数(){
$myId.addClass('show');
计时器&清除超时(计时器);
timer=setTimeout(函数(){
$myId.removeClass('show');
}, 5960); 
});
#我的分区id{
宽度:50px;
高度:50px;
背景色:#C00;
不透明度:0;
-moz跃迁:不透明度1900ms;
-o-转变:不透明度1900ms;
-webkit转换:不透明度1900ms;
过渡:不透明度1900ms;
}
#我的部门id秀{
不透明度:1;
}


您的代码工作正常:。检查控制台中其他位置的错误。另外,仅供参考,您不需要
尝试
环绕
clearTimeout()
@rorymcrossan感谢您的小提琴,但是在我的情况下不起作用…而且我没有从console@Simone请检查我的回答尝试理解jquery中的remove()和removeClass(),我不知道为什么,但在我的CodeIgniter框架中,您的解决方案可以工作,不是我的。感谢你的错误在这里$('my#u div_id').fadeOut(1900).removeClass('show');感谢这个解决方案,但我不能在我的项目中使用它,事实上我的div加载在主模板上,我只需要在一个视图中淡入/淡出