如何使用jQuery更改超链接的href属性

如何使用jQuery更改超链接的href属性(链接目标)?

1693328 次浏览

使用

$("a").attr("href", "http://www.google.com/")

将修改所有超链接的href以指向Google。不过,您可能需要一个更精致的选择器。例如,如果您混合了链接源(超链接)和链接目标(又名“锚点”)锚点标签:

<a name="MyLinks"></a><a href="http://www.codeproject.com/">The CodeProject</a>

…那么您可能不想意外地向它们添加href属性。为了安全起见,我们可以指定我们的选择器只会将<a>标签与现有的href属性匹配:

$("a[href]") //...

当然,你可能会想到一些更有趣的东西。如果你想将锚点与特定的现有href匹配,你可以使用如下内容:

$("a[href='http://www.google.com/']").attr('href', 'http://www.live.com/')

这将找到href与字符串http://www.google.com/完全匹配的链接。一个更复杂的任务可能是匹配,然后只更新href的一部分:

$("a[href^='http://stackoverflow.com']").each(function(){this.href = this.href.replace(/^http:\/\/beta\.stackoverflow\.com/,"http://stackoverflow.com");});

第一部分只选择href开始http://stackoverflow.com的链接。然后,定义一个函数,使用一个简单的正则表达式将URL的这部分替换为一个新的。请注意这为您提供了灵活性-对链接的任何修改都可以在这里完成。

在查找中使用attr方法。您可以使用新值切换掉任何属性。

$("a.mylink").attr("href", "http://cupcream.com");

根据您是想将所有相同的链接更改为其他链接,还是想控制页面给定部分中的链接,还是单独控制每个链接,您可以执行其中之一。

更改所有指向Google的链接,使其指向Google地图:

<a href="http://www.google.com">
$("a[href='http://www.google.com/']").attr('href','http://maps.google.com/');

要更改给定部分中的链接,请将容器div的类添加到选择器。此示例将更改内容中的Google链接,但不会更改页脚中的Google链接:

<div class="content"><p>...link to <a href="http://www.google.com/">Google</a>in the content...</p></div>
<div class="footer">Links: <a href="http://www.google.com/">Google</a></div>
$(".content a[href='http://www.google.com/']").attr('href','http://maps.google.com/');

要更改单个链接,无论它们在文档中的位置如何,请向链接添加一个id,然后将该id添加到选择器。此示例将更改内容中的第二个Google链接,但不会更改第一个链接或页脚中的链接:

<div class="content"><p>...link to <a href="http://www.google.com/">Google</a>in the content...</p><p>...second link to <a href="http://www.google.com/"id="changeme">Google</a>in the content...</p></div>
<div class="footer">Links: <a href="http://www.google.com/">Google</a></div>
$("a#changeme").attr('href','http://maps.google.com/');

当单击类“menu_link”的链接时,此代码段会调用,并显示链接的文本和url。返回false会阻止链接被跟踪。

<a rel='1' class="menu_link" href="option1.html">Option 1</a><a rel='2' class="menu_link" href="option2.html">Option 2</a>
$('.menu_link').live('click', function() {var thelink = $(this);alert ( thelink.html() );alert ( thelink.attr('href') );alert ( thelink.attr('rel') );
return false;});

使用jQuery 1.6及以上版本,您应该使用:

$("a").prop("href", "http://www.jakcms.com")

propattr的区别在于attr抓取超文本标记语言属性,而prop抓取DOM属性。

你可以在这篇文章中找到更多细节:. prop()vs. attr()

尽管OP明确要求提供jQuery答案,但如今您不需要对所有内容都使用jQuery。

一些没有jQuery的方法:

  • 如果要更改所有<a>元素的href值,请将它们全部选中,然后遍历Nodelist(示例)

    var anchors = document.querySelectorAll('a');Array.prototype.forEach.call(anchors, function (element, index) {element.href = "http://stackoverflow.com";});
  • If you want to change the href value of all <a> elements that actually have an href attribute, select them by adding the [href] attribute selector (a[href]): (example)

    var anchors = document.querySelectorAll('a[href]');Array.prototype.forEach.call(anchors, function (element, index) {element.href = "http://stackoverflow.com";});
  • If you want to change the href value of <a> elements that contain a specific value, for instance google.com, use the attribute selector a[href*="google.com"]: (example)

    var anchors = document.querySelectorAll('a[href*="google.com"]');Array.prototype.forEach.call(anchors, function (element, index) {element.href = "http://stackoverflow.com";});

    同样,您也可以使用另一个属性选择器。例如:

    • a[href$=".png"]可用于选择href值以.png结尾的<a>元素。

    • a[href^="https://"]可用于选择<a>个元素,其中href个值以https://前缀。

  • 如果要更改满足多个条件的<a>元素的href值:(示例)

    var anchors = document.querySelectorAll('a[href^="https://"], a[href$=".png"]');Array.prototype.forEach.call(anchors, function (element, index) {element.href = "http://stackoverflow.com";});

..no need for regex, in most cases.

 $("a[href^='http://stackoverflow.com']").each(function(){this.href = this.href.replace(/^http:\/\/beta\.stackoverflow\.com/,"http://stackoverflow.com");});

停止使用jQuery只是为了它!这只适用于JavaScript。

document.querySelector('#the-link').setAttribute('href', 'http://google.com');

https://jsfiddle.net/bo77f8mg/1/

更改WordPress Avada主题徽标图像的HREF

如果你安装了短代码执行PHP插件,你可以创建这个短代码,我称之为myjavascript

?><script type="text/javascript">jQuery(document).ready(function() {jQuery("div.fusion-logo a").attr("href","tel:303-985-9850");});</script>

您现在可以转到外观/小部件并选择一个页脚小部件区域并使用文本小部件添加以下简码

[myjavascript]

选择器可能会根据您使用的图像以及是否已准备好视网膜而改变,但您始终可以使用开发人员工具找出答案。

这样做的简单方法是:

attr函数(从jQuery 1.0版开始)

$("a").attr("href", "https://stackoverflow.com/")

Prop函数(从jQuery 1.6版开始)

$("a").prop("href", "https://stackoverflow.com/")

此外,上述方式的优点是,如果selector选择单个锚点,它将仅更新该锚点,如果selector返回一组锚点,它将仅通过一条语句更新特定组。

现在,有很多方法可以识别确切的锚点或锚点组:

很简单的几个:

  1. 通过标签名称选择锚点:$("a")
  2. 通过索引选择锚点:$("a:eq(0)")
  3. 为特定类选择锚点(因为在这个类中只有锚点类active):$("a.active")
  4. 选择具有特定ID的锚点(在示例profileLink中)ID):$("a#proileLink")
  5. 选择第一个锚点href:$("a:first")

比较有用的:

  1. 选择所有具有href属性的元素:$("[href]")
  2. 选择具有特定href的所有锚点:$("a[href='www.stackoverflow.com']")
  3. 选择所有没有特定href的锚点:$("a[href!='www.stackoverflow.com']")
  4. 选择所有包含特定URL的href锚点:$("a[href*='www.stackoverflow.com']")
  5. 从特定URL开始选择所有带有href的锚点:$("a[href^='www.stackoverflow.com']")
  6. 选择所有以特定URL结尾的href锚点:$("a[href$='www.stackoverflow.com']")

现在,如果你想修改特定的URL,你可以这样做:

例如,如果您想为所有要google.com的URL添加代理网站,您可以如下实现:

$("a[href^='http://www.google.com']").each(function(){this.href = this.href.replace(/http:\/\/www.google.com\//gi, function (x) {return "http://proxywebsite.com/?query="+encodeURIComponent(x);});});

href在属性中,所以你可以使用纯JavaScript更改它,但如果你已经在页面中注入了jQuery,别担心,我会展示两种方式:

假设你有下面的href

<a id="ali" alt="Ali" href="http://dezfoolian.com.au">Alireza Dezfoolian</a>

你喜欢改变它的链接…

使用纯JavaScript没有任何库,你可以这样做:

document.getElementById("ali").setAttribute("href", "https://stackoverflow.com");

jQuery中,你可以这样做:

$("#ali").attr("href", "https://stackoverflow.com");

$("#ali").prop("href", "https://stackoverflow.com");

在这种情况下,如果你已经注入了jQuery,可能jQuery一个看起来更短,更跨浏览器……但除此之外,我选择JS一个……

试试看

link.href = 'https://...'

link.href = 'https://stackoverflow.com'
<a id="link" href="#">Click me</a>

试试这个;

$("#link").attr("href", "https://coenvink.com/")

代码功能的细分:

$("#link")

这部分代码获取id为“Link”的元素。在此之后,您将属性“href”(女巫基本上是链接到URL)设置为您的新URL,女巫,在这种情况下,是我自己的网站:

.attr("href", "https://coenvink.com/")

我希望现在清楚了!