jQuery after()不使用动态创建的节点

时间:2015-08-21 20:44:25

标签: javascript jquery html

我正在创建一个WYSIWYG文本编辑器,而不能使用.on代替<a onclick>,因为这样我就会丢失文本选择。但是我需要在动态创建节点之后插入<div>

HTML:

<a href="javascript:;" onclick="wrap('div')">
    <div class = "insert_after" ></div>
</a>

JS

function wrap(tag) {
  var sel, range;
  if (window.getSelection) {
    sel = window.getSelection();
    if (sel.rangeCount) {
        range = sel.getRangeAt(0);
        var selectedText = range.toString();
        range.deleteContents();
        var newNode = document.createElement(tag);
        range.insertNode(newNode);
        $(newNode).after("<div style = 'width: 100%; min-height: 20px'></div>");
    }
  }
}

1 个答案:

答案 0 :(得分:1)

您可以尝试替换:

var newNode = document.createElement(tag);
range.insertNode(newNode);

by:

var newNode = $('<'+tag+'></'+tag+'>');
range.insertNode(newNode[0]);