2012-02-21 61 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()); 
});