html内容如下
<label>
测试文字1
<select>
<option>10</option>
</select>
测试文字2
</label>
目标:仅替换测试1测试2文字
尝试手段:因为该段代码是js插件自动生成,无法给文字加标签,关于使用$('label') = ‘<label>...’,或对textContent,innerHtml,text的任何全部替换和修改都会导致功能丢失(分析原因可能为如整体替换,内存中值也会改变才导致功能丢失)
请教如何再保留外部label和内部select,只替换文字部分。
//先获取select
var $select = $("label").find("select");
//清空,填充新的内容
$("label").empty().append("文字1").append($select).append("文字2");
我跟楼上的思路差不多,不过这样也会对一些空白的文本节点生效吧?
label js对象.childNodes[0]和.childNodes[nodes.length]可能有针对性一点?
貌似看错了,这里的情况并没有空白的文本节点。
//遍历label的子节点
for(var i=0;i<label.childNodes.length;i++){
//筛选文本节点
if(label.childNodes[i].nodeType==3){
//修改文本节点的内容
//do something
}
}