jQuery Asual Address не удается

0

Это я снова с другой проблемой глубокой привязки. Я использую Asual Address, и все работает нормально. Кроме одного:

Если во второй раз подряд нажать ссылку, ничего не произойдет. Для меня это довольно сложно объяснить. Для лучшего понимания я добавил jsfiddle, чтобы вы могли убедиться сами.

http://jsfiddle.net/CKUPx/6/show/

http://jsfiddle.net/CKUPx/6/

Поскольку документация адреса асаса действительно сбивает меня с толку, я, возможно, потерпел неудачу в чем-то простом. Если у кого-нибудь есть предложения, как это решить, сообщите мне.

Я предполагаю, что это не удается при попытке использовать history.pushState, но я не могу понять, что это такое.

Это мой jquery:

var $ov = $('#overlay'),
    $ld = $('#load');


$ov.click(function (e) {

    history.pushState(null, "Title", "/");
    $ld.empty();
    $ld.hide();
    $ov.hide();

});

$.address.init(function () {

    $('.item a').address(function () {
        return $(this).attr('href').substring(20);

    });

}).change(function (event) {

    if ($ld.is(':empty')) {
        $ld.hide();
        $ov.hide();
    }

    $ld.load(event.value + ' #contain', function () {

        if ($ld.not(':empty')) {
            $ld.show();
            $ov.show();
        }
        if ($ld.is(':empty')) {
            $ld.hide();
            $ov.hide();
        }

    });

});
Теги:

3 ответа

1
Лучший ответ

Я думаю, вам нужно использовать $.address.value() при применении URL- $.address.value():

$('.item a').address(function () {
        return $.address.value($(this).attr('href').substring(20));
    });

играть на скрипке

  • 0
    Не думайте, что это поведение, которое он ищет. Оверлей больше не работает в вашем примере.
  • 0
    @TimVermaelen не тестировал все браузеры, но работает в Chrome
Показать ещё 9 комментариев
0

Поскольку вы на самом деле ничего не ИЗМЕНЯЕТЕ, когда вы щелкаете дважды, и поскольку я не очень хорошо знаком с идеей/библиотекой за этим... здесь идет мое "грязное" решение:

// add a timestamp to your value so it always different
$('.item a').address(function (ev) {
    return $(this).attr('href').substring(20) + '_' + new Date().getTime();
});

// split the event value by the underscore
$ld.load(event.value.split('_')[0] + ' #contain', function () {});

Он работает, но это не идеальное решение.

0

Я проверил ваш код, и все работает нормально.

Не так уверен в этом, но я думаю, что это может быть так.

Когда вы нажмете второй раз на ту же ссылку, на самом деле это не изменит URL-адрес, поэтому плагин игнорирует это действие только потому, что вы уже загрузили этот контент.

  • 0
    да, мой хороший сэр, это именно то, что мне нужно исправить. Любые предложения по этому вопросу? Не ври, я невежественна. Я думаю, что адрес не может сработать дважды, потому что контент, на который ссылается ссылка, уже был загружен и URL-адрес изменился. Без изменений -> адрес не срабатывает. Я думал, что могу просто изменить URL с помощью pushState, и это будет работать, но это не так.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню