2012-01-08 76 views
0

我有這樣的事情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>

+0

我不能用包含jquery選擇器來做到這一點 – 2012-01-08 10:05:04

+0

':contains'完全匹配文本*,不過。 – 2012-01-08 10:08:55

+1

爲什麼你不能使用包含? – redmoon7777 2012-01-08 10:13:57

回答

1

您可以使用filter()的元素匹配,那麼連鎖addClass()after()

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

jQuery提供a selector

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

http://jsfiddle.net/8zmus/

+0

不適用於'$('a:contains(1)')。addClass('myclass') ;'cite:「請注意,必須是文本」 – 2012-01-08 10:14:47

+1

'$('a:contains(1)')。addClass('myclass');'選擇'1','10'和'21' ... – Andreyco 2012-01-08 10:29:57

+0

沒錯。不明白「必須是正文的通知」。或者瑪比,當我讀到這個問題時,它不在嗎? – bjelli 2012-01-08 18:18:48

1
嘗試代碼

試試看:

function someName(niddle, new_text) 
{ 
    $('ul a').each(function(){ 
     if($(this).text() == niddle){ 
      $(this).addClass('myclass'); 
      $(this).after(new_text); 
     } 
    }); 
} 
+0

我編輯過。這裏是小提琴http://jsfiddle.net/YWeBE/ – redmoon7777 2012-01-08 10:20:40

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") 

http://jsfiddle.net/am7rY/