在“td”标签内,如何在不删除整个“span”标签脚本的情况下替换“span”标签后的“BMW”字样?(在 JQuery 中)。
“BMW”一词是通配符措辞。可以是“福特”、“沃尔沃”等。
我正在使用JQuery 2.0 版
$('#'....).???
<td>
<span column="17" style="cursor:pointer"></span> BMW
</td>
在“td”标签内,如何在不删除整个“span”标签脚本的情况下替换“span”标签后的“BMW”字样?(在 JQuery 中)。
“BMW”一词是通配符措辞。可以是“福特”、“沃尔沃”等。
我正在使用JQuery 2.0 版
$('#'....).???
<td>
<span column="17" style="cursor:pointer"></span> BMW
</td>
如果文本节点是问题中的下一个兄弟,只需使用 nextSibling:
$('span[column="17"]').get(0).nextSibling.nodeValue = 'Volvo';
试试这个......请注意,我省略了任何空白文本节点:
$("YOUR TD SELECTOR HERE")
.contents()
.filter(
function() {
return this.nodeType == 3 && $(this).text().replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}
)
.text('text to replace here');
您可以使用.contents()
、.filter()
和.replaceWith()
:
例子:
$('table').find('td')
.contents()
.filter(function() {
return this.nodeType === 3;
})
.replaceWith("hello world");
});
编辑:我忘记了第一次通话的结束括号。
不确定如何识别列,因此您可能需要更改选择器。这是一个直接的搜索和替换。您确实只想替换 BMW 一词,对吗?
// Example: $(table.cars td)
$('td').each(function()
{
var repl = $(this).html().replace('BMW', 'Ford');
$(this).html(repl);
});
我不知道有什么好的 jQuery 解决方案,所以我提供了低级的 javaScript 方式。对此感到抱歉,但相信它会有所帮助。
$("td").each(function(i,v){
for (var i = 0;i < v.childNodes.length;i++){
if (v.childNodes[i].constructor.name=="Text"){
v.childNodes[i].nodeValue=v.childNodes[i].nodeValue.replace(/BMW/,"Volvo");
}
}
});
编辑:
它的小bin不兼容,所以它是更好的版本:
$("td").each(function(i,v){
for (var i = 0;i < v.childNodes.length;i++){
if (v.childNodes[i] instanceof Text){
v.childNodes[i].nodeValue=v.childNodes[i].nodeValue.replace(/BMW/,"Volvo");
}
}
});
在这里,我将它变为现实:http: //jsbin.com/ItoOPo/1/edit ?html,js,output