2011-12-03 10 views
0

私は最後に私のURLのスラッグを試みています。jqueryとパス名...もう一度! ;-)

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

すべてのものは、あなたのコードに応じて同じように動作するはずです。おそらく、テストしていた最後のURLにスラッシュがついているだけでしょう。 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

あなたの後ろのものは正確にはわかりませんが、末尾のスラッシュはトリムしてください。どのようにクエリーストリングを処理したいですか?あなたの現在のコードにはそれらが含まれます。

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を使用してホームページにコンテンツを読み込みます。最初の2つのリンクでは動作しますが、3つ目では動作しません。それが問題です。 – Gab

+1

あなたのコードは動作します。だから、あなたがパス名に戻ってきた価値は、それがあなたが思っているものではなく、後ろにスラッシュがあります。 http://jsfiddle.net/tKJes/。 – mrtsherman

関連する問題