Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui 单击并同时键入可拖动的jQuery事件?_Jquery Ui_Draggable_Keydown - Fatal编程技术网

Jquery ui 单击并同时键入可拖动的jQuery事件?

Jquery ui 单击并同时键入可拖动的jQuery事件?,jquery-ui,draggable,keydown,Jquery Ui,Draggable,Keydown,我试图让jQueryUI事件触发,只有当它满足在shift键处于keydown状态时被单击的条件时(模拟被按住),如果不满足,则禁用该事件 本例仅当用户单击并按住shift键时,才使用jQuery UI的.draggable拖动容器div 非工作代码,不确定这是否是执行此操作的最佳方法,或者是哪里出了问题 $(document).click(function(e) { $('.container').keydown(function() { if (e.shiftKe

我试图让jQueryUI事件触发,只有当它满足在shift键处于keydown状态时被单击的条件时(模拟被按住),如果不满足,则禁用该事件

本例仅当用户单击并按住shift键时,才使用jQuery UI的
.draggable
拖动容器div

非工作代码,不确定这是否是执行此操作的最佳方法,或者是哪里出了问题

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

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

我看到该代码有很多错误。首先,只有在单击文档后才能添加密钥侦听器。其次,将keydown添加到container div,而不是整个文档。然后,您还需要听keyup,因为释放shift键应该禁用draggability,那么您还需要将disabled:false传递给shift为down的情况。您的处理程序缺少
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);
});

在简单的演示中效果很好,所以谢谢,代码被弄乱了,但在实际使用中它仍然会导致奇怪的问题,因为一个draggable.png图像由于某种原因在shift发布时变得更加不透明,它还禁用了页面上其他不相关的可拖动事件。我认为这是由于jQuery UI在使某个项成为可拖动项或禁用可拖动项时应用了CSS样式造成的。您可能可以覆盖这些(通过告诉jQuery使用不同的类或在元素上定义自己的样式)哇,对了,它正在应用
opacity:.35;过滤器:α(不透明度=35),其他问题已解决,我想我必须克服它。