选择并替换范围内的文本

时间:2014-10-13 22:05:12

标签: jquery

<span id="spanCompare_5_7">
<input type="radio" name="fCompare_5_7" id="fCompare0" value="0">Filter
<input type="radio" name="fCompare_5_7" id="fCompare1" value="1">Compare
</span>

如何将“比较”文本替换为其他内容? 我有一些代码块,我无法编辑它,我只能通过jq访问。 跨度id“spanCompare_5_7”是通用的,因此它们中的更多都在网站上,并且所有这些都需要相同的更改,所以我不能将此id用作静态选择器,例如$( “#spanCompare_5_7”)。 我永远不知道会出现哪些数字,正如我所说,我需要改变所有数字。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

您可以遍历元素的childNodes并重置匹配的nodeValue后代的textNode

$('span[id^="spanCompare"]').contents().each(function() {
   if ( this.nodeType === 3 && $.trim(this.nodeValue) === 'Compare' ) 
       this.nodeValue = 'whatever';
});

http://jsfiddle.net/yyrks4h3/

如果您想要破坏性地(通过更改属性和可见内容)重置元素的innerHTML,您可以使用html方法:

$('span[id^="spanCompare"]').html(function(_, h) {
   return h.replace(/Compare/g, 'whatever');
});

答案 1 :(得分:0)

也许是这样的?

var html = $('#spanCompare_5_7').html();
html = html.replace("Compare", "");
$('#spanCompare_5_7').html(html);

答案 2 :(得分:0)

尝试:

var spn = $('#spanCompare_5_7');
spn.html(spn.html().replace(/Compare\b/, 'replacement'));