使用jquery从函数中排除子元素

Joh*_*hnG 6 javascript regex jquery

使用以下代码:

<p>Red red red red <a href="http://www.google.com"> this should be red alone</a> red red</p>
Run Code Online (Sandbox Code Playgroud)

除了'a'标签中的那个之外,我如何将所有'红色'更改为'黄色'?

我到目前为止:

$("p").html(function(i,event){
    return event.replace(/(red)/g,'yellow');
});
Run Code Online (Sandbox Code Playgroud)

......将一切变为黄色.我假设我需要在if子句中添加以下内容:

if (event.target.tagName === "a")
{return false}
Run Code Online (Sandbox Code Playgroud)

但我已经尝试了很多我在stackoverflow上发现的东西,没有效果.有任何想法吗?

sma*_*ber 1

<a>肮脏的方式,因为太具体,如果有很多,则无法工作<p>,但如果<p>只有一个,则可以工作<a>

最好的方法是找出正确的正则表达式。

var aContent = $('p > a')[0].outerHTML;

$('p').html(function(i,event) {
    var parts  = event.split(aContent);

    for (var i, l = parts.length; i<l; i++) {
        parts[i] = parts[i].replace(/red/ig, 'yellow');
    }

    return parts.join(aContent);
});
Run Code Online (Sandbox Code Playgroud)
<p>Red red red red <a href="http://www.google.com">red</a> red red</p>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)