Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.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-在所有锚链接前面放置一个自定义目录_Javascript_Jquery_Html - Fatal编程技术网

Javascript jQuery-在所有锚链接前面放置一个自定义目录

Javascript jQuery-在所有锚链接前面放置一个自定义目录,javascript,jquery,html,Javascript,Jquery,Html,是否可以使用jQuery将自定义文件夹名称放在页面上所有链接的前面 例如,如果我的网站上有以下链接: <a href="/user/login">Login</a> <a href="/user/register">Register</a> <a href="/user/forum">Forum</a> 是否可以这样做,以便当页面加载时,它们将自动转换为: <a href="/foldername/user/lo

是否可以使用jQuery将自定义文件夹名称放在页面上所有链接的前面

例如,如果我的网站上有以下链接:

<a href="/user/login">Login</a>
<a href="/user/register">Register</a>
<a href="/user/forum">Forum</a>

是否可以这样做,以便当页面加载时,它们将自动转换为:

<a href="/foldername/user/login">Login</a>
<a href="/foldername/user/register">Register</a>
<a href="/foldername/user/forum">Forum</a>

更改是将
/foldername
添加到所有链接。

您可以使用:

$('a').each(function(){
  $(this).attr('href','/foldername'+$(this).attr('href'));
});


你可以这样做:

$("a[href^='/']").each(function() {
    $(this).attr("href", "/foldername" + $(this).attr("href"));
});
演示:

想法非常简单,只需迭代每个锚,并将foldername附加到每个href


var$this=$(this)
用于选择器缓存,因此jQuery不会两次从DOM中选择元素。

那么,您可以遍历DOM树并解析所有

regexp应该解析典型的文件夹字符串。我不知道jQuery是如何处理这类东西的,但这是非常有效的,因为
TreeWalker
是本机的,经过精心设计,几乎只返回您需要的内容

$("a[href^='/']").each(function() {
    $(this).attr("href", "/foldername" + $(this).attr("href"));
});
var matcher = new RegExp("/^[/a-z]*$/");

var filter = { 
    acceptNode: function(node){ 
        if(node.tagName === "a"){ 
            return NodeFilter.FILTER_ACCEPT; 
        }
    }
}

var tree_walker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT, filter, false);

while(tree_walker.nextNode()){
    var a_elem = tree_walker.currentNode;
    var loc = a_elem.getAttribute("href");
    if ( matcher.test(loc) ){
        a_elem.setAttribute("href", "/foldername" + loc);
    }
}