Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery在锚定链接之前添加当前页面URL_Javascript_Jquery - Fatal编程技术网

Javascript 使用jQuery在锚定链接之前添加当前页面URL

Javascript 使用jQuery在锚定链接之前添加当前页面URL,javascript,jquery,Javascript,Jquery,我一直在使用一个平台(Nationbuilder),它会自动在标题中添加基本标记。直到最近才出现,现在几十个带有锚链接的页面最终将用户发送到主页 我需要使用jQuery在#锚之前添加当前页面的url。我能找到的最接近的代码是以下代码,但我不知道如何修改它,因此只修改以#开头的href属性的链接: $("a").attr("href", "http://www.example.com/pageslug") 因此,我想: <a href="#anchorname"></a>

我一直在使用一个平台(Nationbuilder),它会自动在标题中添加基本标记。直到最近才出现,现在几十个带有锚链接的页面最终将用户发送到主页

我需要使用jQuery在#锚之前添加当前页面的url。我能找到的最接近的代码是以下代码,但我不知道如何修改它,因此只修改以#开头的href属性的链接:

$("a").attr("href", "http://www.example.com/pageslug")
因此,我想:

<a href="#anchorname"></a>

改为:

<a href="http://www.example.com/pageslug#anchorname"></a>

您可以使用CSS属性,该属性以选择器开头:

不要选择
“a”
,而是选择
“a[href^=“#”]”
,意思是“a标签的href属性以
#
开头

比如:

$('a[href^="#"]').each(function(i,el){
    el.href = "http://www.example.com/pageslug" + el.hash;
});
像这样的事

$('a').attr('href', window.location.pathname + this.attr('href'))

除了Benjamin所说的,您还需要捕获每个锚的当前href,这意味着您需要一个循环

$('a[href^="#"]').each(function(index, element){
    var $ele = $(element),
        oldHref = $ele.attr('href');
    $ele.attr('href', '//example.com/page'+ oldHref);
});

Benjamin添加了一个循环,他的代码甚至是最基本的,当原生DOM对象没有好处时,您不需要(也不应该)包装它,每个
htmlanchoreElement
(“标记”)它有一个
.href
属性,你可以直接使用:)是的,你的解决方案很棒。我太专注于jQuery;)但是Benjamin的小提琴在Chrome 33.0.1750.146上不起作用。你的代码似乎给出了预期的结果:奇怪。我完全喜欢他的代码。为什么它不起作用?我觉得这是一个足够好的问题我想你的小提琴似乎改变了
http://www.example.com/pageslughttp://fiddle.jshell.net/3c2aB/show/#about
而不是
http://www.example.com/pageslug#about
.el.href返回完整的解析url,而$(el).attr('href')返回根据需要只给出href属性的值。@Novaugust的解决方案似乎有效。@Ketola您完全正确,这应该是
el.hash
,而不是
el.href
-尼斯捕获将更新,使用
el.getAttribute(“href”)
如果您需要处理包含不仅仅是散列的相对HREF,即
“/about”
->
“example.com/about”
如果我想获得路径,我会使用
el.pathname
。这也是内置的。谢谢Ben!这节省了大量时间!