0

javascript 関数を呼び出す href 属性を持つ要素があります。この要素は、( ) の 2 つのクラスに分類されますclass="icon32 icon-close"。このリンクは、クラスを持つ div の「X」として表され.modaldiv. 私の質問は、div を閉じて、ユーザーが「esc」キーを押したときにリンクを呼び出すことができるかということです。以下のコードを試しましたが、アラートは表示されますが、機能しません。

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

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

5 に答える 5

2

jQueryイベントではなく、ネイティブDOM要素.click()のイベントを呼び出す必要があります。そのためには、代わりに次のようなコードを使用してください。.click()

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

これは機能しません-escキーを押すか(この場合、keyCodeの代わりにe.whichを使用してみてください)、または実際のセレクターを押してクリックを呼び出しますか?(この場合、要素に明示的なIDを指定してセレクターが間違っているかどうかをテストし、その方法で選択して、それが単なるセレクターであることを確認してください)。

また、なぜ「X」をクリックする必要があるのですか?->モーダルdiv要素を単に「hide()」できないのですか?

于 2013-01-17T10:11:18.663 に答える
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

これを行うこともできます:

$(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 に答える