2012-08-09 92 views
0

的URL我做的脚本。这就得到了元素的href。但我只想要这个网址的最后一部分。我有这样的:获取一个元素

var newURL = $(".list-portfolio a").attr("href"); 
    pathArray = newURL.split('/'), 
     secondLevelLocation = pathArray[0]; 

    var newPathname = ""; 
    for (i = 3; i < pathArray.length; i++) { 
     newPathname += "/"; 
     newPathname += pathArray[i]; 
    } 

这导致了这个/portfolio/ruimzicht.html那差不多好了。我如何删除第一个/。

你有任何提示,以提高代码?

回答

2

为什么不使用数组功能?

var pathArray = ["portfolio", "ruimzicht.html"]; 

// build a string by inserting a forward slash between all elements 
pathArray.join("/"); 

// results in: portfolio/ruimzicht.html 

如果你在最后一部分只是有兴趣,无论如何,你可以缩小它变成一个班轮:

url.split("/").pop(); // yields "ruimzicht.html" 
0

尝试以此来避免/第一个串联:

for (i = 3; i < pathArray.length; i++) 
{ 
    if(i != 3) 
     newPathname+= "/"; 

    newPathname += pathArray[i]; 
} 
0
newPathname = newPathname.trim("/"); 
+1

不上IE <9,歌剧<10.5工作。只是要记住。 – 2012-08-09 20:08:50

+0

我其实不知道,谢谢你的抬起头 – nickaknudson 2012-08-09 20:54:19

0

我认为,这样做的URL解析这种方式使得代码脆弱和容易出错。相反,做所有的字符串分割和/或正则表达式的操作,您可以使用第三方插件一样jQuery-URL-Parser,它允许你从一个元素得到的URL,并将其分解为不同的部分,这样就可以访问该文件名或主机名等。下面是如何在您的案例中使用它的例子。

var url = $.url($(".list-portfolio a").attr("href")); 
url.attr('file'); // this will give you ruimzicht.html 

它使代码更简单,更易于阅读和维护。

+0

的URL解析器是,如果你有吨他们一个伟大的想法。包括一个170线插件将双线转换为双线,似乎不符合直觉。 – 2012-08-09 17:26:45

+0

我同意你的观点,但我仍然认为问题中提出的代码很脆弱并且容易出错。如果添加插件对于应用程序来说是过度杀毒软件,那么至少应该打开源代码,看看它是如何实现的以及它是否可以使用。此外,从我的经验,大量的代码聚集​​在一处被用来启动,但随着应用的增长,你知道它之前,你在做在多个地方同样的东西。 – 2012-08-09 21:11:08

+0

当然,我完全同意它从一个地方开始,并从那里增长。因为这个,我正要重构我们的应用程序;)。如你所说,这取决于用例。就我个人而言,我讨厌用数百KB的Javascript来窃听我的用户来完成简单的任务。没有冒犯,只有我2美分。我全部都是为了简化手头上的工作和懒惰,所以我不必再发明别人已经比我自己做得更好的事情。 – 2012-08-09 21:16:00