这又是我的另一个深层链接问题。我正在使用Asual Address,一切似乎都运行正常。除了一件事:
如果连续第二次按下链接,则不会发生任何事情。对我来说,很难解释。为了更好地理解,我添加了一个jsfiddle,所以你可以自己看看。
http://jsfiddle.net/CKUPx/6/show/
由于因果地址的记录对我来说真的很混乱,我可能在一些简单的事情上失败了。如果有人有任何建议如何解决这个问题,请告诉我。
我的猜测是,我尝试使用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();
}
});
});
答案 0 :(得分:1)
我认为您在应用网址时需要使用$.address.value()
:
$('.item a').address(function () {
return $.address.value($(this).attr('href').substring(20));
});
答案 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 () {});
它有效,但它不是一个理想的解决方案。