我正在为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);
答案 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' />");