请考虑以下HTML:
<td>
Some Text
<table>.....</table>
</td>
我需要操纵td
元素的“Some Text”文本。我不应该触及此td
内的表格元素。
所以,例如,也许我想用“@”替换所有“e”。我用jQuery的.text()和.html()尝试了一些方法。我似乎总是从子表中选择一些我不应该触摸的东西。另外,不幸的是,我无法将“Some Text”包装成span或div。
答案 0 :(得分:7)
$(function(){
$('td').contents().each(function(){
if(this.nodeType === 3)
$(this).replaceWith(this.wholeText.replace(/e/g, '#'));
});
});
或者像你建议的那样
$('td').contents().each(function(){
if(this.nodeType === 3)
this.data = this.wholeText.replace(/e/g, '#');
});
.contents()
提供所有元素, textNodes 。
答案 1 :(得分:4)
如果你想为td中的每个文本做一些事情,你可以用循环迭代它们:
var nodes=tdEl.childNodes;
for(var i=0; i<nodes.length; ++i){
if(nodes[i].nodeType===3){ // 3 means "text"
nodes[i].data = nodes[i].wholeText.replace(/e/g, '@');
}
}
我是否理解您正在寻找的内容?
你可以使用jQuery,如果你已经为其他东西加载它,但我不会在24kb的库中加载上面的一小段代码。