TinyMCE包装元素与另一个(新的)

时间:2010-08-24 13:52:23

标签: javascript dom tinymce

我正在为TinyMCE创建插件,我需要用新的封装现有的elem(节点)。

例如,如果我有段落:

<p>hello</p>

在命令之后我需要:

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

我在下面试过但它并没有包装段落,只包括他们的身体,例如:

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

创建:

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

最简单的方法是什么?

更新

最终我决定使用以下构造(没有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);

2 个答案:

答案 0 :(得分:2)

如果您能够在您的应用程序中使用jQuery,则有wrap() function。如果你有

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

然后你可以这样做:

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

给你:

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

更新

再次阅读了您的问题,我认为您可能需要wrapInner()

答案 1 :(得分:1)

我知道这是非常古老的,但供将来参考

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