如何将类添加到在contenteditable元素内创建的div?

时间:2015-11-09 17:28:34

标签: javascript jquery html jquery-ui

以下是示例代码:

<div>
  Text..
  <div id="editable-editor" contenteditable="true">Some Text Here...</div>
</div>

如果在#editable-editor之后按Some Text内输入,则会为文本Here创建<div>Here...</div>元素。

如何将jquery-ui draggable类添加到<div>Here...</div>元素以使其可拖动?

3 个答案:

答案 0 :(得分:0)

您需要参考this SO answer。从本质上讲,没有跨浏览器保证的方式来了解何时有人将新内容添加到您的contenteditable元素。但是你可以猜到。

$("#editable-editor").keydown(function () {
   $(this).children('div').each(function () {
        $(this).draggable();
   });
});

只需听取关键事件并为您的新div添加可拖动功能。

答案 1 :(得分:0)

请试试这个

$('div','#editable-editor')。each(function(i){

$(本).addClass( 'UI-插件内容');  $(本).draggable();

});

答案 2 :(得分:0)

尝试使用keypresschange个活动,.has().not()

$("#editable-editor")
  .on({
    "keypress": function(e) {
      if (e.keyCode === 13) {
        $(this).append("<div>Here...</div>")
        .change()
      }
    },
    "change": function() {
      if ($(this).has("div")) {
        $("div", this).not(".ui-draggable").draggable()
      }
    }
  })
.draggable {
  color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script>
<div>
  Text..
  <div id="editable-editor" contenteditable="true">Some Text
  </div>
</div>