单击另一个链接时更改链接的href(使用JQuery)

时间:2012-03-23 09:14:04

标签: jquery

我有:

<a id="id1" href="href1?key=value">First link</a>
<a id="id2" href="href2?key=value">Second link</a>

单击第一个链接时,我需要使用JQuery将第二个链接的href更改为“href2”(反之亦然)。基本上我需要重置网址,以便没有查询字符串:

  • 点击“第一个链接”时,第二个链接必须

    <a id="id2" href="href2">Second link</a>
    
  • 点击“第二个链接”时,第一个链接必须

    <a id="id1" href="href1">First link</a>
    

修改

我正在使用an Ajax Tabs Content Script。在每个标签中,我都有一个搜索表单。由于某些原因,我必须通过GET传递搜索的值。它有效,但如果我更改标签,例如从选项卡1到选项卡2,当返回选项卡1时,将重复搜索。因此,我正在搜索通过单击其他选项卡“重置”URL(即删除查询字符串)的方法。

我会尝试你的建议。

3 个答案:

答案 0 :(得分:0)

这是你在找什么?

​$("#id1").click(function(){
  $("#id2").attr("href") = "new_url";
});

$("#id2").click(function(){
  $("#id1").attr("href") = "new_url";
});

答案 1 :(得分:0)

我认为,两个链接都不会触发完整的回发(即完全刷新页面),因为那样,在客户端使用javascript进行此操作是没有意义的。如果页面完全刷新,则需要在服务器上执行此操作。


编辑:我在你的例子中看到你的href有不同的格式而不是“?”你正在使用“/”,这可能会带来问题,因为无法预测URL中可以存在多少“/”。但是,如果您知道参数位于 LAST “/”之后,那么您可以使用它而不是这样

$('#id1').click(function (e) {
   e.preventDefault(); //To stop the postback (if needed)
   // Grab the url
   var url = $('#id2').attr('href');
   //Grab the substring from the start to the last index of "/"
   url = url.substring(0,url.lastIndexOf('/')); 
   //Get first part of url
   $('#id2').attr('href', url);
});

这里的网址是'?'

$('#id1').click(function (e) {
   e.preventDefault(); //To stop the postback (if needed)
   // Split the href with '?' to get url without parameters
   var url = $('#id2').attr('href').split('?');
   //Get first part of url
   $('#id2').attr('href',url[0]);
});

选择适合你的人,并为第二个链接做同样的事情

答案 2 :(得分:0)

尝试这样做 - :

    $("input[id^='id']").each(function(){
 var href_value = $(this).attr("href");
      $(this).attr("href") = href_value;
    });