我需要在点击时更改任何本地链接的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相关。
答案 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);
});