jQuery Asual Address失败

时间:2014-02-20 17:17:22

标签: jquery html5

这又是我的另一个深层链接问题。我正在使用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 个答案:

答案 0 :(得分:1)

我认为您在应用网址时需要使用$.address.value()

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

fiddle

答案 1 :(得分:0)

我已经测试了你的代码,一切似乎都运行良好。

不太确定,但我认为这可能就是这样。

当您第二次点击相同的链接时,实际上更改了网址,因此插件会因为您已加载该内容而忽略该操作。

答案 2 :(得分:0)

因为当你点击两次时你实际上并没有改变任何东西,因为我对它背后的想法/库并不是很熟悉......这就是我的“脏”解决方案:

// add a timestamp to your value so it's 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 () {});

它有效,但它不是一个理想的解决方案。