jQuery Isoptope通过URL设置默认排序filter

我想知道这个小提琴的问题是什么: http : //jsfiddle.net/GwBa8/150/

我想更改默认情况下使用不同链接加载哪个类别,而无需向我的网站添加额外页面。 最后一个工作状态是这个小提琴http://jsfiddle.net/GwBa8/128/ 。 唯一的区别是以下代码添加到jQuery的开头。

//eg website.com/index/filter/games var $criteria = '*'; var str = window.location.pathname; //games if (str.substring(str.lastIndexOf('#'))) { var $criteria='.'+str.substring(str.lastIndexOf('#')); } else { var $criteria = '*'; } 

为什么这段代码阻止它工作?

我希望像www.website/index#games这样的东西默认加载游戏。

谢谢!

你可以做一些像(未经测试的!)

 $(window).load(function(){ //eg website.com/index/filter/games var str = window.location.pathname; //games var criteria=str.substring(str.lastIndexOf('/')); var $container = $('.creations-container'); $container.isotope({ filter: '.' + 'criteria', } 

});

根据@nchaud评论……

 $(window).load(function(){ //eg website.com/index/filter#games var str = document.URL; //games if ((str.lastIndexOf('#'))!== -1) { var $criteria=str.substring(str.lastIndexOf('#')); } else { var $criteria = '#all'; } 

这会将变量$ criteria设置为导航中类别的链接的匹配ID。

 var $container = $('.creations-container'); $container.isotope({ filter: '*', animationOptions: { duration: 750, easing: 'linear', queue: false } }); $('.creations-filter a').click(function(){ $('.creations-filter .current').removeClass('current'); $(this).addClass('current'); var selector = $(this).attr('data-filter'); $container.isotope({ filter: selector, animationOptions: { duration: 750, easing: 'linear', queue: false } }); return false; }); $($criteria).trigger("click"); 

这会点击url中带有id的元素