2 Stimmen

TinyMCE wrap Element mit einem anderen (dem neuen)

Ich bin die Erstellung von Plugin für TinyMCE und ich brauche, um bestehende Element (Knoten) mit neuen wrap.

Zum Beispiel, wenn ich einen Absatz habe:

<p>hello</p>

nach dem Befehl, den ich brauche:

<div id="someid"><p>hello</p></div>

Ich habe unten versucht, aber es tut; nicht umbrechen Absätze, nur ihre Körper, zum Beispiel:

tinyMCEPopup.editor.execCommand('mceReplaceContent',true,'<div id="someid">{$selection}</div>')

schafft:

<p><div id="someid">hello</div></p>

Was ist der einfachste Weg, dies zu tun?

Aktualisierung:

Schließlich entschied ich mich für die folgende Konstruktion (ohne jQuery):

// Get instance of the editor       
var ed = tinyMCEPopup.editor;

// we are collecting <p> or other default tag to cover it       
var node = tinyMCEPopup.editor.selection.getNode();

// create new dom objects   
var newNode =  ed.dom.create('div', {'class' : 'accordionContent'}); 
var newHNode =  ed.dom.create('h2', {'class' : 'accordionTitle'},document.forms[0].title.value);

// dom modifications
ed.dom.add(node.parentNode, newHNode);
ed.dom.add(node.parentNode, newNode);
newNode.appendChild(node);

2voto

Giles Smith Punkte 1942

Wenn Sie jQuery in Ihrer Anwendung verwenden können, gibt es eine wrap()-Funktion . Hätten Sie

<div id="someid">hello</div>

Dann könnten Sie das tun:

$('#someid').wrap('<p />')

Gibt Ihnen:

<p><div id="someid">hello</div></p>

Aktualisierung:

Ich habe Ihre Frage noch einmal gelesen und denke, Sie brauchen vielleicht wrapInner() stattdessen.

1voto

mtbnunu Punkte 292

Ich weiß, dass dies sehr alt ist, aber für die Zukunft

var ed = tinymce.get("editorId");
$(ed.selection.getNode()).wrap("<div id='someid' />");

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X