0

我有一个元素,该元素具有调用 javascript 函数的 href 属性。该元素分为两类:( class="icon32 icon-close")。此链接在具有类的 div 上表示为“X”,.modal用于关闭div. 我的问题是,当用户按下“esc”键时,我可以关闭 div,因此调用链接。我尝试了下面的代码,但它不起作用,尽管出现了警报:

$(document).keypress(function (e) {
    if (e.keyCode == 27) {
        alert('esc was pressed');

        $('.modal>.icon32').click();
    }
});
4

5 回答 5

2

您应该调用本机 DOM 元素.click()的事件而不是 jQuery事件。为此,请使用以下代码:.click()

$('.modal>.icon32')[0].click();
于 2013-01-17T10:20:31.843 回答
0

您需要使用 keyup 或 keydown 作为转义键,并e.which在 jQuery 中进行了标准化:

$(function() {
    $(document).on('keyup', function (e) {
        if (e.which == 27) {
            $('.modal > .icon32').trigger('click'); //NOTE: direct child selector
        }
    });
});

小提琴

于 2013-01-17T10:11:05.247 回答
0

哪个不起作用 - 按下 esc 键(在这种情况下尝试使用 e.which 而不是 keyCode),或者实际的选择器来调用点击?(在这种情况下,通过给元素一个明确的 ID 来测试您的选择器是否错误,并尝试以这种方式选择它以验证它只是您的选择器)。

另外,为什么你需要“点击”“X”->你不能只“隐藏()”模态 div 元素吗?

于 2013-01-17T10:11:18.663 回答
0

你也可以这样做:

$(document).keyup(function (e) {
    if (e.keyCode == 27) {
        // As soon as he escape is clicked you do..
        $('.icon32.icon-close').click();
    }
});
于 2013-01-17T10:18:25.507 回答
0

如果您使用的是 jQuery 模态对话框,请使用closeOnEscape: false如下选项:

$("#div").dialog({
            modal: true,
            resizable: false,
            closeOnEscape: false,
                buttons: {
                    Ok: function () {
                       //do something
                    }
                    Cancel: function(){
                       //do something
                    }
                }
            });
于 2013-01-17T10:25:24.727 回答