我目前在我设置的 hashchange 函数和 jQuery mobile(用于滑动页面转换)之间遇到了一些冲突。
为了演示这里是我服务器上的一个独立演示:http: //nealfletcher.co.uk/transition/
点击transition click
哪个幻灯片中的相关页面,因为它应该并相应地附加 url /transition/news
:。
这就是问题所在,单击它news hash click
,这将触发我的 hashchange 函数并加载到相关的 div 中,但不是像这样/transition/news/#news-01
的 url:url 被渲染成这样/transition/#news-01
,这在导航到 url 时会导致问题。
反正有没有强制在/news/
哈希之前添加,所以我得到/transition/news/#news-01
而不是/transition/#news-01
?
相关的 jQuery 在下面,是否可以在/news/
哈希之前附加?
任何建议将不胜感激!
jQuery:
$(document).ready(function () {
$(window).hashchange(function () {
var hash = location.hash;
if (hash) {
var element = $('.click-block[data-hook="' + hash.substring(1) + '"]');
if (element) showDetail(element);
}
});
$(document).ready(function () {
$(document).hashchange();
var $container = $('#main-grid, #news-grid');
$(function () {
$container.imagesLoaded(function () {
$container.isotope({
itemSelector: '.grid-block, .grid-break, .hidden',
animationEngine: 'best-available',
filter: '*:not(.hidden), .grid-block',
masonry: {
columnWidth: 8,
gutterWidth: 25
}
});
});
});
$(".click-block").click(function () {
document.location.hash = $(this).attr('data-hook');
});
});
function showDetail(element) {
var newHeight = $('#post-' + element.attr('data-hook')).height();
$('#post-' + element.attr('data-hook')).removeClass('hidden').addClass('grid-break').delay(300).fadeIn('slow');
newHeight = (Math.floor((newHeight + 10) / 230) + 1) * 230 - 10;
$('#post-' + element.attr('data-hook')).css('height', newHeight);
element.children('.up-arrow').fadeIn('slow');
setTimeout(function () {
$('html, body').animate({
scrollTop: $('#post-' + element.attr('data-hook')).offset().top - 90
}, "slow");
}, 1500);
$('#main-grid').isotope();
$('#news-grid').isotope();
}