0

我正在使用 jQuery 插件 FullCalendar 制作一个日历应用程序,我在日历左侧制作了一个标签,上面有 1-6 周的时间。当用户将鼠标拖过某个星期时,日历会切换到相应视图的视图。这很有效,但如果用户不小心这样做,可能会很烦人。所以,我想给函数添加一个延迟,这样它只会在用户将鼠标放在它上面几百毫秒时才会发生,这样在用户不希望它发生的情况下它会发生得更少。

$('#week3').mouseover(function() {
    $('#week3').css('color', 'white');
    $('#week3').css('background-color', '#6B8BA9');
    $('#week3').week3();

我想在之前添加一个短暂的延迟$('#week3').css('color', 'white');

4

3 回答 3

2

使用超时:

$('#week3').on({
    mouseenter: function() {
        var that = this;

        $(that).data('timer', 
            setTimeout(function() {
                $(that).css('color', 'white');
            },1000)
        ).css('background-color', '#6B8BA9').week3();
    },
    mouseleave: function() {
        clearTimeout( $(this).data('timer') );
    }
});
于 2013-08-20T14:29:16.363 回答
2

如果我对您的理解正确,那么您将需要一个更完整的解决方案,如下所示

var mouse_monitor

$('#week3').mouseover(function() {
  mouse_monitor = setTimeout(function(){
    $('#week3').css('color', 'white');
    $('#week3').css('background-color', '#6B8BA9');
    $('#week3').week3();
  }, 1500)
}); 

$('#week3').mouseout(function() { clearTimeout( mouse_monitor ); }

var mouse_monitor 是对超时函数的全局引用。其他帖子中缺少 mouseout 功能,这可确保如果用户在 setTimeout 的值到期之前将鼠标从悬停目标上移开,则不会触发 mouseover 功能。其他示例仍会每次都调用您的鼠标悬停功能,但只是增加了延迟,因此它们不适用于我认为您想要实现的目标。

于 2013-08-20T14:47:48.393 回答
-1

你正在寻找setTimeout

于 2013-08-20T14:29:10.443 回答