查找并与特定的文本替换HTML元素
我有这样的事情HTML代码:查找并与特定的文本替换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");
试试看:
function someName(niddle, new_text)
{
$('ul a').each(function(){
if($(this).text() == niddle){
$(this).addClass('myclass');
$(this).after(new_text);
}
});
}
我编辑过。这里是小提琴http://jsfiddle.net/YWeBE/ – redmoon7777 2012-01-08 10:20:40
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")
我不能用包含jquery选择器来做到这一点 – 2012-01-08 10:05:04
':contains'完全匹配文本*,不过。 – 2012-01-08 10:08:55
为什么你不能使用包含? – redmoon7777 2012-01-08 10:13:57