Найти и заменить HTML-элемент с конкретным текстом - PullRequest
0 голосов
/ 08 января 2012

У меня есть что-то вроде этого HTML-кода:

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

И я хочу создать код Jquery, который добавляет класс к ссылке с заданным текстом (обратите внимание, что должно бытьименно текст).Например, если я звоню Method(1, "replaced text"), то это должен быть результат HTML:

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

Ответы [ 4 ]

1 голос
/ 08 января 2012

попробуй:

function someName(niddle, new_text)
{
    $('ul a').each(function(){
        if($(this).text() == niddle){
            $(this).addClass('myclass');
            $(this).after(new_text);
        }
    });
}
1 голос
/ 08 января 2012

Вы можете использовать filter () , чтобы сопоставить элемент, затем связать addClass () в after () :

$("li > a").filter(function() {
    return $(this).text() == "1";
}).addClass("myclass").after("replaced text");
0 голосов
/ 08 января 2012

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/

0 голосов
/ 08 января 2012

jQuery предлагает селектор для этого

$('a:contains(10)').addClass('myclass');

Попробуйте код на

http://jsfiddle.net/8zmus/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...