2012-02-21 72 views
3

我曾經見過類似的線程,並嘗試過在他們的解決方案中使用語法,但沒有任何工作。使用jQuery根據文本的鏈接改變鏈接的href屬性

我想根據鏈接文本更改某個頁面的某種類型的所有鏈接的href屬性。這裏是我現在有:

$('.class li a').attr('href', '#' + $(this).text()); 

$(this).text()似乎沒有返回任何東西。自從我使用jQuery以來已經有一段時間了,所以我很困惑這個問題。我也嘗試過.val().html()

+2

除非你點擊鏈接,$(本)的.text()不適用,因爲它指的是什麼。你需要使用each()。 – j08691 2012-02-21 17:29:02

回答

4

在這種情況下,$(this)沒有引用當前的a標記。

你可以試試這個:

$('.class li a').each(function(){ 
     $(this).attr('href', '#' + $(this).text()); 
}); 
+0

謝謝,它已經有一段時間了。我會接受(10分鐘)。 – 2012-02-21 17:31:40

+0

至少使用'$ .each()':它的循環速度要快幾倍:http://jsperf.com/jquery-each-vs-for-loops/7 – Jasper 2012-02-21 17:36:05

1

this參考$('.class li a').attr('href', '#' + $(this).text());不是鏈接標記.. jQuery提供第二ARG也可以在其內部this將參照鏈接標籤。所以一些功能像下面應該做的伎倆。

DEMO

嘗試,

$('.class li a').attr('href', function() { 
    return '#' + $(this).text() 
}); 
0
$(".class li a").each(function(){ 
    $(this).attr('href', '#' + $(this).text()); 
});