jQuery清理方式来获取href数组并重建它

时间:2015-01-16 14:56:30

标签: javascript jquery

我还在学习,虽然我的方法有效,但我不相信它很优雅,可以改进。基本上我们有一个系统,我无法控制输出,所以我使用以下代码获取锚点的href并操纵它指向正确的位置。

HTML

<a class="shop-return" href="/_shop/category/prodect/">Link</a>

的jQuery

//set url object
var link = $(".shop-return");
//get url objects href value + split it into parts
var linkUrl = link.attr("href").split("/");
    /*remove the starting blank space and the ending 
    product part of url*/
    linkUrl.splice(-2,2)
    linkUrl.shift();

//build new link
var newLinkUrl = linkUrl.join("/");
//set new link on object
link.attr('href', "/" + newLinkUrl + "/");

关于如何使这个更清洁/更有效的任何建议 - 如果我已经在正确的事情或其他事情,将不胜感激。

1 个答案:

答案 0 :(得分:2)

另一种方法是使用正则表达式来缩短代码:

var link =  $(".shop-return");
var linkUrl = link.attr("href").match(/\/([_a-z]+)\/([a-z]+)\//);

link.attr('href', linkUrl[0]);

这使用regEx匹配。 linkUrl[0]包含带有前缀和后缀斜杠'/'的网址,linkUrl[1]是第一个网址部分,linkUrl[2]是第二个

正则表达式中的括号选择“匹配”的内容,因此:link.attr("href").match(/\/([_a-z]+)\/([a-z]+)\//);

返回["/_shop/category/", "_shop", "category"]