2012-08-09 94 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