【问题标题】:Click and keydown at same time for draggable jQuery event?可拖动的jQuery事件同时单击和keydown?
【发布时间】:2012-03-28 00:10:58
【问题描述】:

我试图让 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
            });
        }
    });
});​

【问题讨论】:

    标签: jquery-ui draggable keydown


    【解决方案1】:

    我看到该代码有很多错误。首先,您只需在单击文档后添加关键侦听器。其次,您将 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);
    });
    

    【讨论】:

    • 在简单的演示中运行良好,谢谢,代码搞砸了,但在实际使用中它仍然会导致奇怪的问题,因为某种原因,当释放 shift 时,由于某种原因,draggable.png 图像变得更加不透明,它还禁用了页面上其他不相关的可拖动事件。
    • 我认为这是由于 jQuery UI 在使项目可拖动或禁用可拖动项目时应用的 CSS 样式。您可能可以覆盖这些(通过告诉 jQuery 使用不同的类或通过在元素上定义自己的样式)
    • 哇你的权利,它正在申请 opacity: .35; filter: Alpha(Opacity=35); ,其他问题已解决,我想我必须覆盖它。
    猜你喜欢
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多