我使用gridster构建了一个可拖动的网格,并遇到了我的可编辑DIV不可编辑的问题,因为gridster.js会覆盖click
事件。我找到了解决方案,当我点击DIV时我可以手动触发focus()
功能,现在这个DIV中的文字可以改变 BUT 不可选(不是鼠标或键盘)
你知道导致这种行为的原因吗?我用我的代码制作了一个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();
});
});
答案 0 :(得分:2)
发现问题。问题是resize
功能。因此,解决方案不仅仅是在用户点击时关闭draggable()功能,还必须关闭resize
功能。
关闭:
gridster.disable().resize_disable();
开启:
gridster.enable().resize_enable();
当用户双击该字段时,我现在也完成了editable
任务,因为这是一个更好的解决方案,具有更少的不当行为。