如何启用“可拖动”在内容可编辑的元素上?
我想要一个使用 jQuery UI 同时可编辑和可拖动的 div。内容可编辑性似乎仅在未启用可拖动的情况下才起作用。我错过了什么吗?我正在使用 jQuery 1.4.4 和 jQuery UI 1.8.9
JavaScript:
$(function(){
$('#draggable').draggable();
});
HTML:
<div contenteditable="true" id="draggable">TEXT</div>
I'd like to have a div that is at the same time editable and draggable, using jQuery UI. Content editability seems to work only if draggable is not enabled. Am I missing something? I'm using jQuery 1.4.4 and jQuery UI 1.8.9
JavaScript:
$(function(){
$('#draggable').draggable();
});
HTML:
<div contenteditable="true" id="draggable">TEXT</div>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
虽然 Krule 提供的答案可行,但存在可用性问题。单击时,光标将始终出现在可编辑区域的开头。这使得无法用鼠标选择文本。跳转到文本区域的唯一方法是使用箭头键。我不认为这是可以接受的。
我能想到的唯一解决方案是使用“句柄”进行拖动:
While the answer provided by Krule will work, there is a usability problem. The cursor will always appear at the beginning of the editable area when clicked. This makes it impossible to select text with the mouse. The only way to jump to an area of text is to use arrow keys. I don't believe this is acceptable.
The only solution I have been able to come up with is to use a "handle" for dragging:
它正在工作,但 jQuery 可拖动正在劫持点击事件。您仍然可以使用 Tab 键进行访问。这是一个快速修复。
It is working but the jQuery draggable is hijacking click event. You can still tab to it. This is a quick fix.
您可以为该 div 指定一个“父 div”,并向其父级添加
draggable
事件。然后使用官方API“取消”HTML:
JS:
you can give this div a 'parent div' and add
draggable
event to it parent. then use offical API 'cancel'HTML:
JS:
这让我抓狂——但是有一种方法可以在不使用拖动手柄的情况下做到这一点。
对可编辑元素使用不同的标签,并防止该元素被
拖
http://api.jqueryui.com/draggable/#option-cancel
This has driven me nuts - but there's a way to do it without a drag handle.
Use a different tag for your editable element, and prevent that element from being
dragged
http://api.jqueryui.com/draggable/#option-cancel