0

我正在使用一个名为 FullCalendar 的 jQuery 插件来制作日历应用程序。我在日历左侧制作了一个标签,上面显示了日历上显示的 6 周中的每一周的标签。因此,例如,如果您将鼠标放在“第 1 周”选项卡上,它会显示该月第一周的议程视图。我想这样当你的鼠标移到标签上时它会显示星期,当你的鼠标离开标签时它会回到正常的月份视图。我让这部分工作,但我也想要它,以便当您实际单击选项卡时,它会停留在该视图上并且不会切换回月视图。

这是正常工作的 mouseover 和 mouseout 部分:

<script>
$( '#week2' ).mouseover(function() {
    $('#week2').css('color', 'white');
    $('#week2').week2();
});
    $( '#week2' ).mouseout(function() {
        $('#week2').weekout();
        $('#week2').css('color', 'yellow');
    });
</script>

只是为了重新迭代,所做的只是当用户将鼠标放在“week2”选项卡上时,它会显示第 2 周的周视图。这是我用来尝试制作的不起作用的代码当用户单击选项卡时,它会使其停留在视图上,即使鼠标离开选项卡也是如此:

<script>
var x = 0;
$( '#week1' ).click(function() {
    var x = 1;
});
$( '#week1' ).mouseover(function() {
    $('#week1').css('color', 'white');
    $('#week1').week1();
});
    $( '#week1' ).mouseout(function() {
        if(x < 1) {
            $('#week1').weekout();
            $('#week1').css('color', 'yellow');
        }
        else {
            null
        }
    });
</script>

我想要做的是,如果用户单击选项卡,它将 x 设置为 1,这样 mouseout() 函数就不会运行。但是,它无论如何都会运行:(

4

1 回答 1

3

var x$( '#week1' ).click函数中再次定义,因此变量失去了原来的全局范围。

更改您的代码:

$( '#week1' ).click(function() {
    var x = 1;
});

至:

$( '#week1' ).click(function() {
    x = 1;
});

关于 var 和范围的文档:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var

于 2013-08-16T16:15:48.083 回答