在dojo中,如何在不擦除元素内的其他节点的情况下擦除内部文本节点?

时间:2015-01-02 07:04:56

标签: javascript dojo

我有

<div>
    blah
    <div>blah2</div>
</div>

我想删除'blah'而不删除blah2

我该怎么做?

使用最新的dojo,1.10。

2 个答案:

答案 0 :(得分:1)

我不确定是否可以使用dojo完成 以下代码使用 dojo 普通 javascript对象的组合来实现您想要的结果。

你的问题陈述。(注意:我已经向父div添加了一个id属性“mydiv”。)

<div id="mydiv">
    blah
    <div>blah2</div>
</div>

删除所有文本节点'blah'。

// require the query and domReady modules
require(["dojo","dojo/query", "dojo/domReady!" ], function(dojo,query) {
   // retrieve an array of nodes with the ID "list"
   var list = query("#mydiv")[0];
   console.log("list:",list);
   var childNodes = list.childNodes;
   var len = childNodes.length;
   var i;
   for ( i = 0; i < len; i++){
       // Destroy All textnodes.
       if ( childNodes[i].nodeType === 3 ) {
          //console.log ("Text node found");
          dojo.destroy(childNodes[i]);
       };
   } 

})

答案 1 :(得分:0)

感谢蒂姆·唐(Tim Down):How to remove text (without removing inner elements) from a parent element using jquery根据他的说法,自IE5起,这应该有效。

require(["dojo/query", "dojo/domReady!"], function(query) {
var parent = query("#parentid")[0];    
var nextchild;
var child = parent.firstChild;

while (child) {
nextChild = child.nextSibling;
if (child.nodeType == 3) {
parent.removeChild(child);
}
child = nextChild;
}
});