如果没有警报,则无法调用jQuery函数

时间:2013-07-16 03:39:56

标签: jquery alert keydown

我的网站上有一些点击功能。当我点击它们时,我想切换一个特定的类。这是我必须做的代码:

$(".phenomenology_toggle_box").click(function() {
    pageClicked = '.phenomenology_toggle_box';
    escClicked = !escClicked;
    $('.phenomenology_close').toggleClass("phenomenology");
});

$(".judith_toggle_box").click(function() {
    pageClicked = '.judith_toggle_box';
    escClicked = !escClicked;
    $('.judith_close').toggleClass("judith");
});

我还希望能够在按ESC键时调用最近点击的项目的功能。这是我的代码:

$(document).keydown(function escape(e) {
    if (e.keyCode == 27 && escClicked == false){ // Esc
        $(pageClicked).trigger('click');
        pageClicked = 'null';
        escClicked = true;
    }
});

Esc键无法调用该函数,除非我在要调用的函数中有警报。像这样:

$(".judith_toggle_box").click(function() {
    pageClicked = '.judith_toggle_box';
    escClicked = !escClicked;
    $('.judith_close').toggleClass("judith");
    //**************
    alert("Judith has been called.");
    //**************
});

如何在不添加愚蠢警报的情况下让ESC键调用该函数?

1 个答案:

答案 0 :(得分:0)

在您的点击功能中添加一个事件参数

尝试将其添加到函数的第一行 - event.preventDefault();

所以例如

$(".judith_toggle_box").click(function(event) {
    event.preventDefault();
    pageClicked = '.judith_toggle_box';
    escClicked = !escClicked;
    $('.judith_close').toggleClass("judith");
});

编辑:忘记将事件添加为函数参数,请再次检查