点击和keydown同时拖动jQuery事件?

问题描述:

我试图让一个jQuery UI事件触发,只有当它符合被按下的条件时shift键处于keydown状态(模仿被持有),并且如果不禁用事件。点击和keydown同时拖动jQuery事件?

本示例仅在用户单击并保存转换时才使用jQuery UI的.draggable来拖动容器div。

http://jsfiddle.net/zEfyC/

非工作代码,不知道这是做这做了什么问题的最佳途径。

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

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

我看到很多错误代码。首先,您只需在点击文档后添加关键字侦听器。其次,您将keydown添加到容器div,而不是整个文档。然后,您还需要听取关键帧,因为释放shift键将禁用可拖动性,那么您还需要将关闭:false设置为关闭移位的情况。你的处理程序缺少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); 
}); 
+0

作品在简单的演示精细这样的感谢,代码一塌糊涂,但在实际使用移被释放时,它还是引起了奇怪的问题,一个draggable.png图像由于某些原因变得更加不透明,并且还禁用了页面上其他不相关的可拖动事件。 – Wyck 2012-03-28 03:25:07

+0

我认为这是由于jQuery UI在使项目可拖动时应用的CSS样式,或者禁用可拖动项目。你可以重写这些(通过告诉jQuery使用不同的类或通过在元素上定义你自己的样式) – webjprgm 2012-03-28 03:27:14

+0

哇你的权利,它应用'不透明度:.35; 过滤器:阿尔法(不透明度= 35);',其他问题已解决,我想我必须超过它。 – Wyck 2012-03-28 03:53:13