为了使用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)但我该怎么办?
答案 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
}