Это я снова с другой проблемой глубокой привязки. Я использую 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();
}
});
});
Я думаю, вам нужно использовать $.address.value()
при применении URL- $.address.value()
:
$('.item a').address(function () {
return $.address.value($(this).attr('href').substring(20));
});
Поскольку вы на самом деле ничего не ИЗМЕНЯЕТЕ, когда вы щелкаете дважды, и поскольку я не очень хорошо знаком с идеей/библиотекой за этим... здесь идет мое "грязное" решение:
// 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 () {});
Он работает, но это не идеальное решение.
Я проверил ваш код, и все работает нормально.
Не так уверен в этом, но я думаю, что это может быть так.
Когда вы нажмете второй раз на ту же ссылку, на самом деле это не изменит URL-адрес, поэтому плагин игнорирует это действие только потому, что вы уже загрузили этот контент.