2011-12-03 54 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