0

我正在使用 MediumEditor,它是一个使用 contenteditables 的所见即所得编辑器。我需要为 contentEditable 中的每个元素分配不同的 ID,但是(当您按下 时Enter)编辑器将从具有所有属性的 esiting 段落中克隆一个段落。我想知道是否有一种方法可以<p>从克隆的元素中识别新元素?新元素可以放在现有元素之前或之后。

更新:

这是一个例子: https ://jsfiddle.net/wwoh7e62/

<div id="container">
    <p id="myid" class="myclass" data-id="myid">some text</p>
</div>

<button onclick="doClone(); myFunc();">clone</button>

<script>
doClone = function() {
    var container = document.getElementById('container');

    var node = container.getElementsByTagName('p')[0].cloneNode(false);

    node.innerHTML = 'cloned node';

    container.appendChild(node);
}

myFunc = function () {
    console.log('my func');
}
</script>

doClone我无权访问中的代码。我的代码应该驻留在myFunc函数中。

当我键入小提琴时,我意识到解决方案可能是附加一个事件侦听器(未克隆),而新节点将是没有事件侦听器的节​​点。

更新:

之前分配的 ID 需要与用于标识特定节点的 ID 保持一致。

4

1 回答 1

0

你可以试试这个:

  1. 从“p”中删除 id

    <div id="container"> <p class="myclass" data-id="myid">some text</p> </div> <button onclick="doClone(); myFunc();">clone</button>

  2. 然后将它们更新到您的 Func 函数中:

    var length = document.getElementById("container").getElementsByTagName("p").length; for(var i=0; i < length; i++) { document.getElementById("container").getElementsByTagName("p")[i].id = i; }

这有帮助吗?

于 2017-06-26T20:09:10.853 回答