jquery路径名和语法

时间:2011-08-25 20:16:14

标签: jquery ajax pathname

为了使用ajax加载页面,我的脚本文件中包含以下内容:

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

当用户点击链接到http://www.website.com/link1的锚点时,post_slug警报为link1。但是当我在IE8中使用它时,post_slug警报是ink1而不是link1。我做错了什么?

我猜是.substring(1)但我该怎么办?

4 个答案:

答案 0 :(得分:4)

您可以使用:

$(this)[0].pathname.replace("/", "");

在IE7上测试,Chrome:http://jsfiddle.net/mrchief/vB2Fu/3/

使用正则表达式仅替换起始斜杠

,可以使替换位更加小心
$(this)[0].pathname.replace(/^\//, "");

<强>更新

对于嵌套slu ,,我改了一下:

$(this)[0].pathname.substring($(this)[0].pathname.lastIndexOf("/")).replace(/^\//, "");

演示(在IE7,Chrome上测试):http://jsfiddle.net/mrchief/vB2Fu/5/

答案 1 :(得分:0)

substring(1)表示从第2个字符开始。子(从,到)。所以IE没有返回初始的“/".

答案 2 :(得分:0)

您的问题是IE为pathname返回了不同的值(没有前导/)。

您可以测试它并相应地使用/省略substring或获取整个网址并使用split

答案 3 :(得分:0)

可以测试它

if ($(this)[0].pathname.substring(0, 1) === "/") {
    post_slug = $(this)[0].pathname.substring(1);
} else {
    post_slug = $(this)[0].pathname; // ie8 oddness
}