Javascript jQuery-在所有锚链接前面放置一个自定义目录
是否可以使用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
<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);
}
}