我有类似这样的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>
答案 0 :(得分:1)
尝试:
function someName(niddle, new_text)
{
$('ul a').each(function(){
if($(this).text() == niddle){
$(this).addClass('myclass');
$(this).after(new_text);
}
});
}
答案 1 :(得分:1)
您可以使用filter()来匹配元素,然后将addClass()链接到after():
$("li > a").filter(function() {
return $(this).text() == "1";
}).addClass("myclass").after("replaced text");
答案 2 :(得分:0)
答案 3 :(得分:0)
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")