【问题标题】:JQuery draggable snap cancel with keyJQuery可拖动捕捉取消键
【发布时间】:2012-12-23 19:30:34
【问题描述】:

虽然在 IE 中这适用于 chrome,但它不会:可拖动中的“捕捉”选项在按下“Ctrl”时停止工作,我什至在拖动时按下 ctrl 时似乎都无法收到警报(“SNAP”)。我的尝试是:

 $("#object").draggable({
        handle: '#handle_',
        containment: '#MainBody',
        snap: ".drag_alignLines", // Setting snap to alignment lines
        snapTolerance: 15
                            }).bind('keydown', function(event){ 
                        alert("SNAP");
                    if(event.ctrlKey)
                    {
                        alert("hi");
                        this.draggable( "option", "snap", false );
                    }
                });

在拖动时无法让 Chrome 捕捉到 ctrl 键... 甚至在 IE 中:"this.draggable("option", "snap", false);"只是不要让它在拖动时停止捕捉......

【问题讨论】:

    标签: jquery triggers keyboard-shortcuts jquery-ui-draggable


    【解决方案1】:

    你想要做的是像这样重置 snap 选项:

    $( "#object" ).draggable( "option", "snap", false );
    

    记得在常规点击时将其设置回原始值。这里是this jsfiddle的相关部分:

    $("#object").draggable({
    containment: '#MainBody',
    snapTolerance: 15,
    start: function(event)
        {
            if(event.ctrlKey)
            {
                $(this).draggable("option", "snap", false);
            }else {
                $(this).draggable("option", "snap", '.drag_alignLines');
            }
    
        }});
    

    它绑定到“start”而不是“keydown”,因此您不必在点击 Control 之前瞄准。

    【讨论】:

    • 如果您想在拖动时动态切换捕捉打开和关闭,您也可以将处理程序添加到拖动事件中。这意味着如果您在拖动时按住 ctrl,它不会捕捉,一旦您释放键,它就会再次开始捕捉,即使没有释放鼠标按钮。
    猜你喜欢
    • 2012-04-02
    • 2010-11-20
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 2014-05-24
    • 2021-06-13
    相关资源
    最近更新 更多