2017-06-26 5 views
0

Ich verwende MediumEditor, ein WYSIWYG-Editor, der contenteditables verwendet. Ich muss jedem Element innerhalb des contentEditable verschiedene IDs zuweisen, aber (wenn Sie Enter drücken) klont der Editor einen Absatz von einem es mit all seinen Attributen. Ich frage mich, ob es eine Möglichkeit gibt, das neue <p> Element aus dem zu identifizieren, aus dem es geklont wurde? Das neue Element kann entweder vor oder nach dem vorhandenen platziert werden.Identifiziere geklontes DOM-Element

UPDATE:

Hier ist ein Beispiel: 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> 

Der Code in doClone Ich habe keinen Zugriff auf. Mein Code sollte sich in der myFunc-Funktion befinden.

Während ich die Geige eintippte, erkannte ich, dass die Lösung wahrscheinlich darin besteht, einen Ereignis-Listener anzuhängen (der nicht geklont wird) und der neue Knoten derjenige ist, der den Ereignis-Listener nicht hat.

UPDATE:

ids, die zuvor zugewiesen wurden müssen die gleiche wie Thay bleiben werden verwendet, um bestimmte Knoten zu identifizieren.

+0

Können Sie uns einen Mustercode geben, um zu sehen, was möglich ist? – vanessa

+0

Ich habe die Frage aktualisiert – Okneloper

+0

Könnten Sie bitte den entsprechenden Code auch hier posten anstatt nur den Link zu JSFiddle? –

Antwort

0

Sie können dies versuchen:

  1. Entfernen Sie die ID von "p"

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

  2. Dann sie in Ihre Func Funktion aktualisieren:

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

Hilft das?

+0

Nein, tut mir leid :) Dies kann die ID des ursprünglichen Elements möglicherweise ändern, die ich mir nicht leisten kann – Okneloper

+0

Und wenn Sie die Schleife von i = 1 starten ? https://jsfiddle.net/vma/51b9xuc1/1/ – vanessa

+0

der geklonte Knoten kann vor dem Original eingefügt werden, dies wird die IDs tauschen – Okneloper

Verwandte Themen