查找html元素并将其替换为特定文本

Find and replace a html element with an specific text

本文关键字:文本 替换 html 元素 查找      更新时间:2023-09-26

我有这样的HTML代码:

<ul>
<li><a href="#">21</a></li>
<li><a href="#">10</a></li>
<li><a href="#">6</a></li>
<li><a href="#">1</a></li>
<li><a href="#">7</a></li>
<li><a href="#">5</a></li>
</ul>

我想制作一个Jquery代码,将类添加到具有给定文本的链接中(注意,必须完全是文本)。例如,如果我调用Method(1, "replaced text"),那么这必须是HTML结果:

<ul>
<li><a href="#">21</a></li>
<li><a href="#">10</a></li>
<li><a href="#">6</a></li>
<li><a class="myclass" href="#">1</a>replaced text</li>
<li><a href="#">7</a></li>
<li><a href="#">5</a></li>
</ul>

您可以使用filter()来匹配元素,然后将addClass()链接到after()中:

$("li > a").filter(function() {
    return $(this).text() == "1";
}).addClass("myclass").after("replaced text");

try:

function someName(niddle, new_text)
{
    $('ul a').each(function(){
        if($(this).text() == niddle){
            $(this).addClass('myclass');
            $(this).after(new_text);
        }
    });
}
jQuery为提供了一个选择器
$('a:contains(10)').addClass('myclass');

在尝试代码

http://jsfiddle.net/8zmus/

jQuery没有为"这个确切的文本"提供选择器,但它很容易编写(laaeftr)。您还可以使用更灵活的"匹配"选择器,它将文本与正则表达式(不带分隔符)进行匹配:

$.extend($.expr[':'], {
    matches: function (el, index, m) {  
        var s = new RegExp(m[3]);
        return s.test($(el).text());
    }  
});

一旦我们做到了,剩下的就很容易了:

$("li > a:matches(^10$)").addClass("foo")

http://jsfiddle.net/am7rY/