使用jQuery根据链接文本更改链接的href属性

3

我看过类似的帖子,并尝试了它们的解决方案中的语法,但都没有生效。

我想根据链接文本,更改页面上某一类型所有链接的href属性。以下是我现在拥有的代码:

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

$(this).text() 似乎没有返回任何内容。因为我有一段时间没有用过jQuery,所以对这个问题感到困惑。我也尝试了 .val().html()


2
除非你点击链接,否则$(this).text()不适用,因为它指的是空值。你需要使用each()。 - j08691
3个回答

4
在这种情况下,$(this) 不是指当前的 a 标签。
你可以尝试以下代码:
$('.class li a').each(function(){ 
       $(this).attr('href', '#' + $(this).text());
});

谢谢,有一段时间没见了。我会在10分钟后接受的。 - Logan Serman
至少使用$.each():它比循环快几倍:http://jsperf.com/jquery-each-vs-for-loops/7 - Jasper

1

this引用$('.class li a').attr('href', '#' + $(this).text());不是链接标签。jQuery提供第二个参数,也可以是一个函数,在其中this将引用链接标签。因此,像下面这样的东西应该就可以解决问题了。

演示

试一试,

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接