2013-06-30 3 views
2

В настоящее время у меня возникают проблемы с изотопным плагином jQuery и функцией hashchange. У меня есть сетка divs и на загрузке страницы ТОЛЬКО отображаются divs grid-block-filter, нажатие на один из разделов .grid-block-filter приводит к соответствующему контенту, прикрепляя хеш к URL-адресу, чтобы пользователь мог перейти к нему из другого места, все это прекрасно работает , вот мой пример, хотя и я объясню мою проблему:
jsFiddle (с хэшей): http://jsfiddle.net/neal_fletcher/vcffM/9/show

JQuery:jQuery: isotope hashchange, фильтр и кнопка возврата

$(document).ready(function() { 

    var $container = $('#main-grid'); 

    if (location.hash != "") { 
     var hashfilter = "." + location.hash.substr(1); 
    } else { 
     var hashfilter = "*"; 
    } 

    $container.imagesLoaded(function() { 
     $container.isotope({ 
      filter: hashfilter + '.nav-block', 
      itemSelector: '.grid-block', 
      animationEngine: 'best-available', 
      masonry: { 
       columnWidth: 4 
      } 
     }); 
    }); 

    $('.grid-block-filter a').click(function() { 
     var selector = jQuery(this).attr('data-filter'); 
     var prettyselector = selector.substr(1); 
     location.hash = prettyselector; 
     return false; 
    }); 

    $(window).hashchange(function() { 

     if (location.hash != "") { 
      var hashfilter = "." + location.hash.substr(1); 
     } else { 
      var hashfilter = "*"; 
     } 


     $container.imagesLoaded(function() { 
      $container.isotope({ 
       filter: hashfilter, 
       itemSelector: '.grid-block', 
       animationEngine: 'best-available', 
       masonry: { 
        columnWidth: 4 
       } 
      }); 
     }); 
    }); 
}); 

Если нажать на ONE FILTER, например, это приносит в релевантное содержание просто отлично , но затем нажатие на кнопку возврата возвращает ВСЕ содержимое, а не просто показывает grid-block-filter, как и когда страница lo Объявления. Стоит ли вообще останавливать это? Я не могу понять. Любые предложения будут ценны!

ответ

0

Когда пользователь нажимает кнопку «Назад», тогда document.ready не срабатывает. В этом суть проблемы, с которой вы сталкиваетесь. Один из способов - разместить ваши сценарии в нижней части страницы, а не в методе onload, чтобы гарантировать, что они всегда выполняются.

Другим способом было бы принять подход этого StackOverflow ответа: https://stackoverflow.com/a/170478/1026459

Если вы установите history.navigationMode на «совместимый», то готов функция JQuery будет стрелять на кнопку Назад операции

history.navigationMode = 'compatible'; 
$(document).ready(function(){ /* code */ }); 
+0

Это, похоже, не работает так, как я этого хотел, этот метод работает при нажатии на кнопку «Назад» и загрузке предыдущей страницы, но поскольку я использую функцию hashchange, страница не является перезагружается, и мне кажется это Это не работает. Я также попробовал развернуть окно, но снова столкнулся с той же проблемой, что и на самом деле не перешел от страницы? – user1374796

+0

Это не сработало для меня в Chrome (без хэштегов в моем случае использования). Скользящие изотопные скрипты под изотопами также не разрешались. – Deborah