2012-12-24 4 views
3

Я использую JQuery для загрузки содержимого страницы при нажатии на ссылку,JQuery как для загрузки содержимого при нажатии кнопки назад щелкают

$(document).on('click', 'nav a', function (e) { 
    e.preventDefault(); 

    var url = $(this).attr("href"); 
    window.history.pushState('', '', url); 
    url += " #main_wrapper > *"; 

    $('#main_wrapper').load(url); 

}); 

Проблема заключается в том, когда я нажимаю на кнопку Назад, изменения URL и ничего не происходит .. Как загрузить содержимое снова при нажатии кнопки «Назад»?

И как я могу остановить/отменить существующую нагрузку при нажатии новой ссылки?

Спасибо.

EDIT:

Это, как я реализовать это, Вы можете легко изменить это к вашим потребностям.

window.onpopstate = function(event) { 

    $('aside nav a').removeClass('active'); 
    $('a[href="' + document.location + '"]').addClass('active') 

    $('#main_wrapper').load(document.location +" #main_wrapper > *"); 

}; 

ответ

1

Как я могу загрузить содержимое еще раз, когда кнопка нажата назад?

Вам нужно назначить обработчик события для события popstate для обработки кнопки «Назад», нажав, как описанной here. С помощью этого обработчика вы можете проанализировать текущее состояние истории и соответственно увеличить свою страницу.

И как я могу остановить/отменить существующую нагрузку при нажатии новой ссылки?

К сожалению, вы не можете сделать это с помощью .load, так как он возвращает объект jQuery 'originator'. Но если превратить его в более низкий уровень $.ajax вызова (который success функции должна загрузить ответ в элемент с .html(), вы можете вызвать .abort на возвращенном объекте jqXHR.

+0

Спасибо, работал как шарм. –

Смежные вопросы