2017-06-26 107 views
0

我正在使用MediumEditor,其中所見即所得編輯器使用contenteditables。我需要爲contentEditable中的每個元素分配不同的ID,但是(當您按Enter時),編輯器會從最初的屬性克隆一個段落。我想知道是否有辦法從它被克隆的元素中識別出新的<p>元素?新元素可以放在現有元素之前或之後。確定克隆的DOM元素

UPDATE:

下面是一個例子: 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函數中。

當我輸入小提琴時,我意識到該解決方案可能會附加一個事件偵聽器(未克隆),並且新節點將是沒有事件偵聽器的那個節點。

更新:之前分配

IDS需要保持一樣大公被用來識別特定的節點。

+0

您能否給我們一個生成代碼的示例來查看可以做什麼? – vanessa

+0

我更新了問題 – Okneloper

+0

請問您是否可以在這裏發佈相關的代碼,而不是僅僅鏈接到JSFiddle? –

回答

0

你可以試試這個:

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

  1. 從 「P」

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

  2. 然後將它們更新到您的Func鍵功能刪除ID

    這有幫助嗎?

+0

不,抱歉:)這可能會改變潛在的原始元素的ID,我承擔不起 – Okneloper

+0

如果從i = 1開始循環? https://jsfiddle.net/vma/51b9xuc1/1/ – vanessa

+0

克隆的節點可以在原來之前插入,這樣會交換ID – Okneloper