更改<a> tag before it fires</a>的href

时间:2014-08-02 12:36:45

标签: javascript jquery html

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

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

我尝试过类似的东西而且没用。我试过了:

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

在另一个档案中:

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

并且这不起作用,除非您在更改发生之前发出警报,然后它会按预期发生。任何帮助将不胜感激,如果格式不正确,这是我第一次发布如此道歉

5 个答案:

答案 0 :(得分:3)

你可以这样做:

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;

        }
      });

    });

答案 1 :(得分:2)

您可以通过JS重定向链接

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

答案 2 :(得分:0)

你可以做到 HTML

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

JQuery的

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

答案 3 :(得分:0)

你的第一种方法是正确的。您似乎只是忘记引用该文字:

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

答案 4 :(得分:0)

处理点击前的链接时,请勿更改href。相反,在页面加载和/或(如果链接打开一个新窗口或不会导致窗口重新加载) >之后,将其更改更早。< / p>

示例:Live Copy

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));
}

请注意链接总是将用户带到他们可以提前看到的位置,然后根据需要进行更新。