如何在点击时使用javascript / jquery更改任何本地链接的目标?

时间:2010-10-20 08:02:26

标签: javascript jquery

我需要在点击时更改任何本地链接的href。 我已经弄清楚如何选择正确的链接并创建新的网址,但不知道如何更改位置。我需要确定任何其他点击事件也已运行,因此我不能立即更改位置。

var my_host = 'example.com';
$(document).click(function(e) {
    if(e.target.hostname == my_host)
    {
        alert(e.target.protocol + "//" + e.target.hostname + "/#" + e.target.pathname + e.target.search);
        //...
    }
});

这与我的earlier question相关。

3 个答案:

答案 0 :(得分:3)

您可以在此类本地链接上绑定活动,并使用attr方法更改href

$('a[href*="yourdomain.com"]').click(function(){
  // your code before changing href
  $(this).attr('href', 'new url here');
});

yourdomain.com替换为您自己的域名,以便上述代码仅定位到您的本地链接。

答案 1 :(得分:0)

这是完全未经测试的,但应该让你到达目的地:

var site = "http://yourdomain.com";

// Match anchor tags with an href value that starts with your
// site URL, or that start with / which are relative URLs (also
// your site).
$('a[href^="' + site + '"] a[href^="/"]').click(function(){
    var url = $(this).attr('href');
    if (url.indexOf(site) != -1) {
        url = site + "/#" + url.replace(site, ""); // Quick dirty way to get the path component of the URL
    } else {
        url = "/#" + url;
    }
    $(this).attr("href", url);
});

请注意,我已经阅读了您的其他问题,我个人不明白为什么您会在点击事件中执行此操作,而不是在加载页面后立即替换所有href值。

答案 2 :(得分:0)

归功于Sarfraz:这是没有错误的答案。

var my_host = "example.com";
$('a[href^="/"], a[href^="http://' + my_host + '"], a[href^="https://' + my_host + '"]').click(function(e){
    $(this).attr('href', e.target.protocol + "//" + e.target.hostname + "/#" + e.target.pathname + e.target.search);
});