2011-12-03 53 views
0

我在最後嘗試我的網址slu slu。jquery和pathname ...再次! ;-)

如果url是以下之一,我只想得到「link1」(沒有引號)。

http://www.site.com/link1

http://www.site.com/category/link1

http://www.site.com/myblog/category/link1

這是我有,但只有2個創舉工作。

$(".ajaxed").live("click", function(event) { 
     var post_slug = $(this)[0].pathname.substring($(this)[0].pathname.lastIndexOf("/")).replace(/^\//, ""); 
     alert(post_slug); 
     $.address.crawlable(true).value(post_slug); 
     $(this).load("ajax/",{slug:post_slug}, function(){ 
     }); 
     return false; 
    }); 

請問我可以獲得語法方面的幫助嗎?非常感謝您的時間和幫助。

+1

所有這些應該根據自己的代碼工作相同。當您測試它時,您可能剛剛在最後一個網址中出現了斜線。 site.com/myblog/category/link1*/* – mrtsherman

+0

該死的你是對的! ;-)謝謝 – Gab

回答

0

爲什麼你不能分割字符串並返回最後?

var post_slug_array = $(this)[0].pathname.split('/'); 
var post_slug = post_slug_array[post_slug_array.length - 1]; 
0

我已經試運行:

t = "http://www.site.com/myblog/category/link1"; 
t.substring(t.lastIndexOf("/")).replace(/^\//,""); 
console.log(t); 

和我link1。這是對的,不是嗎?那麼地球上的問題是什麼?

0

不確定你究竟是什麼,但修剪尾部的斜線。你想如何處理querystrings?您當前的代碼包含它們。

http://jsfiddle.net/ppyJr/1/

//test cases 
var paths = new Array(
    'http://www.site.com/link1', 
    'http://www.site.com/myblog/category/link1', 
    'http://www.site.com/myblog/category/link1?querystring', 
    'http://www.site.com/myblog/category/link1/', 
    'http://www.site.com/myblog/category/link1/?querystring' 
); 

for (var i = 0; i < paths.length; i++) { 
    //trim trailing slash 
    var x = paths[i].replace(/\/$/, ""); 
    //get trailing item 
    var post_slug = x.substring(x.lastIndexOf("/") + 1, x.length); 
    alert(post_slug); 
} 
+0

我更新了我的問題。我使用AJAX在我的主頁上加載內容。它適用於前兩個鏈接,但不是第三個鏈接。那就是問題所在。 – Gab

+1

您的代碼確實有效。因此,您爲路徑名返回的值不是您認爲的值,或者它具有斜線。 http://jsfiddle.net/tKJes/。 – mrtsherman