1

我用gridster构建了一个可拖动的网格,并遇到了我的可编辑 DIV 不可编辑的问题,因为 gridster.js 覆盖了click事件。我找到了focus()当我单击 DIV 时可以手动触发该功能的解决方案,现在此 DIV 中的文本是可更改的,不可选择(不能使用鼠标或键盘)。

你知道是什么导致了这种行为吗?我用我的代码做了一个 JSFiddle -> CLICK

HTML 看起来像:

<div class="gridster" id="frame" style="border:1px solid #cecece;">
    <ul>
        <li class="widget" data-row="1" data-col="1" data-sizex="2" data-sizey="1">
            <div id="testID">Test 1</div>
            <div class="drag-handle">HAND</div>
        </li>
        <li class="widget" data-row="1" data-col="1" data-sizex="2" data-sizey="1">
            <div>Test 2</div>
            <div class="drag-handle">HAND</div>
        </li>
    </ul>
</div>

JS看起来像:

$(document).ready(function() {
    var gridster = $(".gridster ul").gridster({
        max_cols: 2,
        widget_margins: [10, 2],
        widget_base_dimensions: [140, 40],
        resize: {
            enabled: true,
            axes: ['x']
        },
        draggable: {
            handle: '.drag-handle'
        }
    }).data('gridster');

    $("#testID").click(function(){
          gridster.disable();
          $(this).attr("contenteditable","true");
          $(this).focus();
    })
    .blur(function(){
          gridster.enable();
    });
});
4

1 回答 1

2

发现了问题。问题是resize功能。因此,解决方案不仅是在用户单击时关闭 draggable() 功能,还应该关闭该resize功能。

关掉:

gridster.disable().resize_disable();

打开:

gridster.enable().resize_enable();

editable当用户双击该字段时,我现在也完成了任务,因为这是一个更好的解决方案,并且行为不端。

于 2014-02-05T08:40:11.000 回答