在attr不工作的情况下向TinyMCE节点添加属性

时间:2015-10-01 17:18:47

标签: wordpress tinymce

我正在开发一个WordPress插件,它为TinyMCE添加了一个按钮,可以让你为所选元素添加一个id属性。我有按钮显示,当它被点击它运行我的功能,我将这个演示称为“idFunc”,它看起来像这样:

function idFunc() {

  // Make sure editor has focus.
  editor.focus();

  // Get currently selected node
  var selectednode = editor.selection.getNode();

  // Set the id attribute on the node
  selectednode.attr("id","newid");

}

如上所述写入idFunc(),单击我的按钮时没有任何反应。如果我将最后一行更改为这样的警告:

function idFunc() {

  editor.focus();

  var selectednode = editor.selection.getNode();

  // Alert with the selected node
  alert(selectednode);

}

我按预期收到警告,其中说:

  

mytestingdomain.com上的页面说: [object HTMLParagraphElement]

如果我把div放在div而不是p元素中,它会说:

  

mytestingdomain.com上的页面说: [object HTMLDivElement]

所以我知道我很接近,但attr()函数没有向TinyMCE编辑器中的任何元素添加任何属性。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

解决这个问题很容易。 editor.selection.getNode()为您提供了共同的祖先节点(不是jQuery对象)。

要在节点上设置id属性,您可以调用以下命令之一:

selectednode.setAttribute("id","newid");

selectednode.id = "newid";

或使用jQuery

$(selectednode).attr("id","newid");