jquery 替换除img和h2标记中的单词以外的所有单词,

brvekthn  于 2023-08-04  发布在  jQuery
关注(0)|答案(1)|浏览(108)

我有jquery来把单词转换成链接。此代码成功阻止了图像标记中包含的单词。但我仍然有一个问题,这个词仍然是一个链接时,内部的h1,h2,h3和其他标签。
jquery代码可以只替换p tag中包含的单词吗?

我的验证码:

var myCat = ['ABC', 'Hoo'],
        goUrl = new RegExp('(?<!<img[^>]*?)(' + myCat.join('|') + ')', 'g');

    jQuery('.post-body').html(function (_, curHtml) {
        return curHtml.replace(goUrl, "<a href='/search/label/$1'>$1</a>");
    });

字符串
或者也许有一个更好的方法没有jquery,所以只是使用JavaScript,这将是更好的我。

o2rvlv0m

o2rvlv0m1#

这取决于您的要求,但如果您希望将替换限制为仅p标记内的文本。您可以修改jQuery以仅针对这些元素;

jQuery示例

var myCat = ['ABC', 'Hoo'],
    goUrl = new RegExp('(?<!<img[^>]*?)(' + myCat.join('|') + ')', 'g');

jQuery('.post-body p').html(function (_, curHtml) {
    return curHtml.replace(goUrl, "<a href='/search/label/$1'>$1</a>");
});

个字符

仅JavaScript示例

var myCat = ['ABC', 'Hoo'],
    goUrl = new RegExp('(?<!<img[^>]*?)(' + myCat.join('|') + ')', 'g');

document.querySelectorAll('.post-body p').forEach(function(element) {
    element.innerHTML = element.innerHTML.replace(goUrl, "<a href='/search/label/$1'>$1</a>");
});
<div class="post-body">
    <h1>Here is a header with ABC</h1>
    <p>This is a paragraph with ABC</p>
    <h2>Here is another header with Hoo</h2>
    <p>This is another paragraph with Hoo</p>
    <img src="https://example.com/image.jpg" alt="This is an image with alt text ABC and Hoo">
</div>

的字符串

相关问题