繁体   English   中英

在<a>代码触发前</a>更改其href

[英]Changing the href of an <a> tag before it fires

我当前的问题是,我想在页面加载之前指向的页面之前更改标签的href。

<a href = "#oldLink" onclick = "this.href = #newLink"></a>

我已经尝试过类似的方法,但是没有用。 我试过了:

<a href = "#oldLink" onclick = "changeLink();"></a>

在另一个文件中:

changeLink(){
    $("a").attr("href", "#newLink");
}

并且这是行不通的,除非您在更改发生之前发出警报,然后确实按预期发生。 任何帮助将不胜感激,这是我第一次发布,如果格式不正确,我们深表歉意

您可以这样:

HTML:

<a href = "#oldLink" id="link"></a>

EIDT:

先前的解决方案将创建一个事件的递归循环,而不是这样做

JQUERY:

$(function () {

$("#link").on("click", function (e) {

    e.preventDefault(); //stop default behaviour

    $(this).attr("href", "#newLink"); // change link href

    window.location.href = "#link2";
  });

});

要么:

$(function () {

$("#link").on("click", function (e) {

    if ($(this).attr('href') === '#oldLink') // check if it is old link
    {

        e.preventDefault(); //stop default behaviour

        $(this).attr("href", "#newLink"); // change link href

        $(this).trigger("click"); // click link programmatically

    }
  });

});

更新:

$(function () {

    $("#link").on("click", function (e) {

        if ($(this).attr('href') === '#oldLink') // check if it is old link
        {

            $(this).attr("href", "#newLink"); // change link href

            $(this).trigger("click"); // click link programmatically

            return false;

        }
      });

    });

您可以通过JS这样重定向链接

changeLink(e){
    window.location = "#newLink";
    e.preventDefault();
}

您可以通过HTML来完成

<a href = "#oldLink">abc</a>

jQuery查询

$('a').attr("href", "some url");

您的第一种方法是正确的。 似乎您只是忘了引用文本了:

<a href = "#oldLink" onclick = "this.href = '#newLink';"></a>

处理点击之前的链接时,请勿更改href 取而代之的是, 单击页面加载和/或(如果链接打开一个新窗口,否则不会导致窗口重新加载) 之前 ,对其进行更早的更改。

示例: 实时复制

var link = $("#link");

setRandomLink();

link.click(function() {
  // Allow the link to be followed, then update it
  // with a new random value
  setTimeout(setRandomLink, 0);
});

function setRandomLink() {
  link.attr("href", "#" + Math.floor(Math.random() * 100));
}

请注意,链接如何始终将用户带到他们可以看到的预先位置,然后适当地进行更新。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM