替换文本但不在URL内

时间:2014-03-22 20:56:15

标签: jquery dom

我必须遵循以下结构:

<div class='xx'>
  That is awesome!!
<a href="http://www.his-stuff.com">yodel</a>
</div>

<div class='xx'>
   can't touch this
</div>

现在我想要替换所有“是”的出现,无论他们是否独自站立。 我这样做了:

$('.xx').each(function()
{
   $(this).html($(this).html().replace("is","was"));
});

我想要以下结果:

  

太棒了 - &gt;那太棒了

     

无法触及此 - &gt;无法触及

这样可行,但包含“是”的网址也已修改

  

www.hwas-stuff.com

我不希望更换网址,而是其他所有网址

信息 我不能使用text()代替html(),因为“真实”代码有点复杂(插入图片而不是文字)

2 个答案:

答案 0 :(得分:1)

试试这个:

$('.xx').contents().filter(function() {
    return this.nodeType == Node.TEXT_NODE && this.nodeValue.trim() != '';
}).each(function() {
    this.nodeValue = this.nodeValue.replace('is','was');
});

Working demo

我在Stack Overflow上提出的一个问题:https://stackoverflow.com/a/11167387/1420186

答案 1 :(得分:0)

你可以这样做:

<div class='xx'>
    That is awesome!!
</div>
<a href="http://www.his-stuff.com">yodel</a>

或:

<div class='the-style'>
    <div class='xx'>
        That is awesome!!
    </div>
    <a href="http://www.his-stuff.com">yodel</a>
</div>

或:

<div class='foo bar'>
    <span class='is-was'>That is awesome!!</span>
    <a href="http://www.his-stuff.com">yodel</a>
</div>

我会优先考虑你如何构建你的html&amp; amp;你的方法,而不是试图找到一些时髦的方法来修补问题,而不是真正修复它。你未来的自我会更加欣赏你。

创建类时,请确保它们执行非常具体(封装)的作业并使名称具有描述性,如果查看twitter引导程序库,它就是一个很好的例子。