jquery 路径名和语法

发布于 2024-12-01 14:25:43 字数 513 浏览 1 评论 0原文

为了使用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) 但我能做什么?

In order to load a page with ajax I have the following in my script file:

$(".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;
});

When the user clicks on an anchor linking to http://www.website.com/link1 the post_slug alert is link1. But when I use this in IE8 the post_slug alert is ink1 instead of link1. What am I doing wrong ?

I guess it's .substring(1) but what can I do?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

你的呼吸 2024-12-08 14:25:43

您可以使用这个:

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

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

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

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

更新:

对于嵌套的 slugs,我对其进行了一些更改:

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

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

You can use this:

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

Tested on IE7, Chrome: http://jsfiddle.net/mrchief/vB2Fu/3/

You can make the replace bit more careful by using regex to replace only the starting slash

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

Update:

For nested slugs, I changed it a bit:

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

Demo (tested on IE7, Chrome): http://jsfiddle.net/mrchief/vB2Fu/5/

是你 2024-12-08 14:25:43

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

substring(1) means to start at the 2nd character. substring(from,to). So IE is not returning the initial "/".

淡淡の花香 2024-12-08 14:25:43

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

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

Your problem is that IE returns a different value for pathname (without the leading /).

You can either test for it and use/omit substring accordingly or get the whole URL and use split

触ぅ动初心 2024-12-08 14:25:43

可以测试一下

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

could test for it

if ($(this)[0].pathname.substring(0, 1) === "/") {
    post_slug = $(this)[0].pathname.substring(1);
} else {
    post_slug = $(this)[0].pathname; // ie8 oddness
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文