2012-01-10 42 views
0

我想了解如何使用Combination filtersJquery BBQ Hash HistoryjQuery同位素组合过滤器与烧烤哈希历史混合 - 需要帮助了解如何

我想要做的是让用户按标识,标识或品牌过滤。如果用户点击徽标,我希望他们可以通过“非营利,教育,零售”等方式进行子过滤。我知道组合过滤器在没有实施jquery BBQ代码的情况下工作正常,但我希望能够同时做到这两点。

$optionSets.find('.filter-main a').click(function(){ 
    var $this = $(this); 
    // don't proceed if already selected 
    if ($this.hasClass('selected')) { 
     return; 
    } 
    changeSelectedLink($this); 
     // get href attr, remove leading # 
    var href = $this.attr('href').replace(/^#/, ''), 
     // convert href into object 
     // i.e. 'filter=.inner-transition' -> { filter: '.inner-transition' } 
     option = $.deparam(href, true); 
    // apply new option to previous 
    $.extend(isotopeOptions, option); 
    // set hash, triggers hashchange on window 
    $.bbq.pushState(isotopeOptions); 
    isOptionLinkClicked = true; 
    return false; 
    }); 

回答

4

http://support.metafizzy.co/2011/isotope-combo-filters-hash-links.html

$(function(){ 
    var $container = $('#container'), 
     filters = {}, 
     // get filter from hash, remove leading '#' 
     filterSelector = window.location.hash.slice(1); 

    $('#filters a').click(function(){ 
    // store filter value in object 
    // i.e. filters.color = 'red' 
    var $this = $(this), 
     name = $this.attr('data-filter-name'), 
     value = $this.attr('data-filter-value'), 
     isoFilters = [], 
     filterName, prop; 

    filters[ name ] = value; 

    for (prop in filters) { 
     isoFilters.push(filters[ prop ]); 
    } 

    var filterSelector = isoFilters.join(''); 

    // trigger isotope if its ready 
    if ($container.data('isotope')) { 
     $container.isotope({ filter: filterSelector }); 
    } 

    window.location.hash = filterSelector; 

    // toggle highlight 
    $this.parents('ul').find('.selected').removeClass('selected'); 
    $this.parent().addClass('selected'); 

    return false; 

    }); 


    // if there was a filter, trigger a click on the 
    // corresponding option 
    if (filterSelector) { 
    var selectorClasses = filterSelector.split('.').slice(1); 
    $.each(selectorClasses, function(i, selectorClass) { 
     $('#filters a[data-filter-value=".' + selectorClass + '"]').click(); 
    }); 
    } 

    $('#container').isotope({ 
    itemSelector: '.item', 
    filter: filterSelector, 
    masonry: { 
     columnWidth: 80 
    } 
    }); 

}); 
+1

解决 - 从创造者本人!非常感谢Desandro先生。它完美的作品。无论如何,我的确看上去很高,但是我们必须忽视这一点。再次感谢。 – Chongo 2012-01-11 15:29:16

+1

它看起来像你的例子打破了后退和前进按钮的功能。这是只有烧烤会帮助吗? – Chongo 2012-01-16 22:46:12

+0

感谢这里的解决方案,但链接已损坏。它在您的支持页面的任何地方仍然可用? – 2013-10-25 12:05:33