JQuery путь и синтаксис - PullRequest
       42

JQuery путь и синтаксис

1 голос
/ 26 августа 2011

Чтобы загрузить страницу с помощью 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 - это ссылка1.Но когда я использую это в IE8, предупреждение post_slug - это ink1 вместо link1.Что я делаю не так?

Полагаю, это .substring (1), но что я могу сделать?

Ответы [ 4 ]

4 голосов
/ 26 августа 2011

Вы можете использовать это:

$(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/

0 голосов
/ 26 августа 2011

может проверить это

if ($(this)[0].pathname.substring(0, 1) === "/") {
    post_slug = $(this)[0].pathname.substring(1);
} else {
    post_slug = $(this)[0].pathname; // ie8 oddness
}
0 голосов
/ 26 августа 2011

Ваша проблема в том, что IE возвращает другое значение для pathname (без ведущего /).

Вы можете либо проверить его и использовать / пропустить substring соответственно, либо получить весь URL и использовать split

0 голосов
/ 26 августа 2011

подстрока (1) означает начать со 2-го символа. подстрока (от, до). То есть IE не возвращает начальный "/".

...