2017-03-12 159 views
-1

**我知道我可以使用jquery或javascript來在網站上更改網址。 有:jquery更改網站的所有網址

$.each($('a'), function(i,v){ 
    var oldULR = $(v).attr('href'); 
    var newURL = oldULR.replace('/fold/fold', '/newfolder'); 
    $(this).attr('href', newURL); 

}); 

但是我只是想更改URL,如果它沒有adddelete在URL的結尾。我有以下網址的例子:**

<a href="http://example.com/fold/fold/AAA">AAA</a> 
<a href="http://example.com/fold/fold/AAA/add">Add new AAA</a> 
<a href="http://example.com/fold/fold/BBB/delete">Delete BBB</a> 
<a href="http://example.com/fold/fold/CCC/add">Add new CCC</a> 

**所以我只是想改變/fold/fold/newfolder如果沒有的adddelete的結局..

因此,最終到達網址看起來像**:

<a href="http://example.com/newfolder/AAA">AAA</a> <!--changed--> 
<a href="http://example.com/fold/fold/AAA/add">Add new AAA</a> <!--no change--> 
<a href="http://example.com/fold/fold/BBB/delete">Delete BBB</a> <!--no change--> 
<a href="http://example.com/fold/fold/CCC/add">Add new CCC</a> <!--no change--> 
+0

好奇至於背後的原因!? – Paul

回答

0

也許使用.endsWith()檢查URL的結束字符串?

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith

$.each($('a'), function(i,v){ 
    var oldULR = $(v).attr('href'); 
    var newURL = oldULR.replace('/fold/fold', '/newfolder'); 
    if (!oldULR.endsWith('/add') && !oldULR.endsWith('/delete')){ 
     $(this).attr('href', newURL); 
    } 
}); 
+0

謝謝!正是我需要的!我的例子:http://jsfiddle.net/bkNLD/4/ – samjco

+0

沒問題,注意填充,因爲這可能不支持所有瀏覽器,你需要支持(見我提供的鏈接) – quack

1

使用條件語句可以做到這一點

$.each($('a'), function(i,v){ 
    var oldURL = $(v).attr('href'); 
    if (!oldURL.endsWith('/add') && !oldURL.endsWith('/delete')) { 
     var newURL = oldULR.replace('/fold/fold', '/newfolder'); 
     $(this).attr('href', newURL);   
    } 
}); 
+0

謝謝@Asoul我試過了這但它沒有奏效。 – samjco

+0

這個答案和我的基本相同。 @ Asoul的答案沒有奏效的原因可能是變量名'oldULR'中的錯字,他指的是'oldURL'。他和我之間唯一的區別是(除了錯字),他在檢查之後建立新的URL,看看是否有必要。而且我認爲Asoul的實施會因此而變得更好。我只是想讓你的代碼快速工作,但這是更好的答案。 – quack

+0

哎呀,謝謝@quack,我只是複製原始代碼,沒有注意到 – Asoul