1

为了使用 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

4 回答 4

4

你可以使用这个:

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

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

您可以通过使用正则表达式仅替换起始斜杠来使替换更加小心

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

更新:

对于嵌套的蛞蝓,我做了一点改动:

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

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

于 2011-08-25T20:25:49.667 回答
0

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

于 2011-08-25T20:25:03.947 回答
0

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

您可以对其进行测试并substring相应地使用/省略或获取整个 URL 并使用split

于 2011-08-25T20:25:27.653 回答
0

可以测试一下

if ($(this)[0].pathname.substring(0, 1) === "/") {
    post_slug = $(this)[0].pathname.substring(1);
} else {
    post_slug = $(this)[0].pathname; // ie8 oddness
}
于 2011-08-25T20:29:51.887 回答