jQuery address plugin - не работает при замене контента - PullRequest
0 голосов
/ 07 июля 2010

Я использую плагин адресов jQuery для включения поддержки кнопки «назад», которая работает, за исключением случаев, когда ссылка находится в области содержимого AJAX. Например

<div id="content">
  <a href="example.html" rel="address:example.html" onclick="ajaxLoad(this);">link</a>
</div>

, где ajaxLoad заменяет content содержимым example.html. Когда я пытаюсь это сделать, адресная строка не меняется, и кнопка «Назад» просто переходит к последнему экземпляру ссылки за пределами области содержимого.

Есть ли способ заставить эту работу?

EDIT:

Плагин: http://www.asual.com/jquery/address/

Пример функции ajaxLoad:

function ajaxLoad(obj)
{
    $.get(obj, function(data)
    {   
        $("#main").html(data);
    }); 
    return false;
}

1 Ответ

0 голосов
/ 09 июля 2010

Я решил это с помощью контекстно-зависимого window.location.

Изменен ajaxLoad:

function ajaxLoad(obj, inline)
{
    if(!inline)
        window.location='#/'+obj.rel.substring(8);
    else
    {
        $.get(obj, function(data)
        {   
            $("#main").html(data);
        });
    }
    return false;
}

А затем обработчик для начальной загрузки страницы, и когда кнопки «назад / вперед»б:

$.address.externalChange(function(event)
{
    var url = event.value.substring(1); //strips the leading slash
    if(url == "")
        url = 'index.php';
    loadPage(url, true);
});

Не знаю, лучший ли это метод, но он работает.

...