我有一个div(contenteditable="true"
),其中包含一些文本和一些html。我试图替换整个div 中的文字,但是与某个类别的链接中的除外。更改文本节点的内容
我想:
$('div#text').contents().not('a.selected').each(function() {
$(this).html(replace($(this).text()));
});
但似乎$(this).html()
是null
?
在div的测试内容是'test <a class="selected">test2</a> test3'
作为输出,我想"test "
和" test3"
与替换()函数的结果被替换,而a.selected内的文本是不变。
编辑
有可能是在div内的一些其他HTML,可以忽略不计。如果替换功能开关的事情为大写,这里有需要的输入蚂蚁ouptut:
输入:'test <a class="selected">test2</a> <a>test3</a>'
输出:'TEST <a class="selected">test2</a> TEST3'
EDIT 2
这似乎是工作,但不当replace()返回一些HTML时
$("div#text").contents().not("a.selected").each(function() {
this.nodeValue = replace(this.nodeValue);
});
demo:http://jsfiddle.net/ApgEc/2/
相同的开始,但不同的问题。我问了选择器,现在没问题。我只需要改变这些文本节点! :) – Manu
@Manu输入可以理解,但是应该输出什么? – VisioN
也许我应该包装()一个,以消除文本节点的问题...... – Manu