同时点击和keydown进行可拖动的jQuery事件?

时间:2012-03-28 00:10:58

标签: jquery-ui draggable keydown

我试图让jQuery UI事件触发,只要它符合在shift键处于keydown状态时被点击的标准(模仿被保持),如果没有禁用该事件。

此示例使用jQuery UI的.draggable仅在用户点击并保持shift时才拖动容器div。

http://jsfiddle.net/zEfyC/

非工作代码,不确定这是否是执行此操作或出错的最佳方法。

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

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

1 个答案:

答案 0 :(得分:2)

我发现该代码有很多错误。首先,您只需在单击文档后添加键侦听器。其次,您将keydown添加到容器div,而不是整个文档。然后,您还需要监听密钥,因为释放shift键应该禁用可拖动性,然后您还需要将shift: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);
});