我曾经见过类似的线程,并尝试过在他们的解决方案中使用语法,但没有任何工作。使用jQuery根据文本的链接改变链接的href属性
我想根据链接文本更改某个页面的某种类型的所有链接的href属性。这里是我现在有:
$('.class li a').attr('href', '#' + $(this).text());
$(this).text()
似乎没有返回任何东西。自从我使用jQuery以来已经有一段时间了,所以我很困惑这个问题。我也尝试过.val()
和.html()
。
我曾经见过类似的线程,并尝试过在他们的解决方案中使用语法,但没有任何工作。使用jQuery根据文本的链接改变链接的href属性
我想根据链接文本更改某个页面的某种类型的所有链接的href属性。这里是我现在有:
$('.class li a').attr('href', '#' + $(this).text());
$(this).text()
似乎没有返回任何东西。自从我使用jQuery以来已经有一段时间了,所以我很困惑这个问题。我也尝试过.val()
和.html()
。
在这种情况下,$(this)
没有引用当前的a
标记。
你可以试试这个:
$('.class li a').each(function(){
$(this).attr('href', '#' + $(this).text());
});
谢谢,它已经有一段时间了。我会接受(10分钟)。 – 2012-02-21 17:31:40
至少使用'$ .each()':它的循环速度要快几倍:http://jsperf.com/jquery-each-vs-for-loops/7 – Jasper 2012-02-21 17:36:05
的this
参考$('.class li a').attr('href', '#' + $(this).text());
不是链接标记.. jQuery提供第二ARG也可以在其内部this
将参照链接标签。所以一些功能像下面应该做的伎俩。
尝试,
$('.class li a').attr('href', function() {
return '#' + $(this).text()
});
$(".class li a").each(function(){
$(this).attr('href', '#' + $(this).text());
});
除非你点击链接,$(本)的.text()不适用,因为它指的是什么。你需要使用each()。 – j08691 2012-02-21 17:29:02