Нажмите и зажмите одновременно для перетаскиваемого события jQuery? - PullRequest
0 голосов
/ 28 марта 2012

Я пытаюсь запустить событие jQuery UI только в том случае, если оно соответствует критериям нажатия, когда клавиша Shift находится в состоянии нажатия клавиши (чтобы имитировать удержание), и если нет, отключить событие.

В этом примере пользовательский интерфейс jQuery .draggable используется для перетаскивания контейнера div, только если пользователь нажимает и удерживает Shift.

http://jsfiddle.net/zEfyC/

Неработающий код, не уверен, что это лучший способ сделать это или что-то не так.

$(document).click(function(e) {

    $('.container').keydown(function() {
        if (e.shiftKey) {
            $('.container').draggable();
        } else {
            $('.container').draggable({
                disabled: true
            });
        }
    });
});​

1 Ответ

2 голосов
/ 28 марта 2012

Я вижу много ошибок с этим кодом.Во-первых, вы добавляете ключевой слушатель только после того, как щелкнули документ.Во-вторых, вы добавляете keydown к div контейнера, а не ко всему документу.Затем вам также необходимо прослушать keyup, так как отпускание клавиши Shift должно отключить перетаскивание, тогда вам также нужно передать значение disabled: false для случая, когда shift выключен.А в вашем обработчике отсутствует параметр e.Попробуйте это:

$(function(e) {
    var handler = function(e) {
        if (e.shiftKey) {
            $('.container').draggable({
                disabled: false
            });
        } else {
            $('.container').draggable({
                disabled: true
            });
        }
    };
    $(document).keydown(handler);
    $(document).keyup(handler);
});
...