如何用each替换元素的attr href?// 去除URL

8

我将尝试使用每种方法更改href属性。

这里是演示,检查a标签,您会发现没有任何变化。

HTML:

<a href="#/news">News</a>
<a href="#/news/detail">Detail</a>
<a href="#/sport">Sport</a>
<a href="#/sport/football">Football</a>​​​​​​​​​​​​

jQuery:

$('a').each(function() {
  $(this).attr('href').replace('#/',''); //tried to erase #/ from all hrefs
});​

你不能像那样将replace链接到attr;只需使用attr作为getter获取href变量,进行替换,然后再使用attr作为setter将其输出即可。(或者像elclanrs一样,你可以直接在setter中完成所有操作!)。 - Greg Pettit
3个回答

15

您发布的代码将以字符串形式获取值,然后正确地替换值,但它立即丢弃了结果。您需要将替换后的值传递给attr。请尝试以下操作:

$('a').each(function() {
  var value = $(this).attr('href');
  $(this).attr('href', value.replace('#/',''));
});​

有趣的是这个程序没有运行到我的插件中 /: 我会再试一次。 - Barlas Apaydin

6
var href = $(this).attr('href');
$(this).attr('href', href.replace('#/',''));

2
您可以检查 href 值并设置条件。
<script type="text/javascript">
$('a').each(function() {
    var value = $(this).attr('href');
    if(value=='http://google.com')
    {
        $(this).attr('href', 'http://youtube.com');
    }
});​
</script>

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