簡體   English   中英

jQuery BBQ的jQuery同位素哈希歷史記錄

[英]jquery isotope Hash history with jQuery BBQ

我正在使用同位素進行過濾,這很棒。 當用戶單擊其中一張圖像時,它會顯示不同的頁面(詳細頁面),但是用於過濾其圖像的菜單仍然存在。 現在我想要的是,當用戶再次單擊一種可能性時,他返回主頁,但已經有了過濾結果。

我已經閱讀了此頁面( http://isotope.metafizzy.co/docs/hash-history-jquery-bbq.html ),但我承認我不了解很多事情

我建議使用以下HTML代碼:

div id="leftMenu">

            <span><a href="#filter=*" >All Menus</a></span>
            <span><a href="#filter=.pizza" >Pizza </a></span>
            <span><a href="#filter=.soda" >Soda </a></span>
            <span><a href="#filter=.popcorn" >PopCorn</a></span>
            <span><a href="#filter=.beer" >Beer</a></span>
         </div> 

和后續的Js代碼

$('#leftMenu span a').click(function() {
        // 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);
        // set hash, triggers hashchange on window
        console.log('value de href: '+href+ ' || option: '+option);
        $.bbq.pushState(recursiveDecoded);

        return false;
    }); 

但是我在depram函數上出錯了。 它告訴我$ .depram不是函數

我是否必須鏈接其他文件才能讀取depram方法?

誰能幫助我完成或理解我的??

非常感謝

編輯-我的進度我發現了兩個額外的js文件,我將我的項目鏈接到它們,並使用以下代碼

$('#leftMenu span a').click(function() {
        // 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);
        // set hash, triggers hashchange on window
        $.bbq.pushState(option);
        console.log("--> " +option );
        //return false;
    });     


$(window).bind('hashchange', function(event) {
    alert('Hello');
    // get options object from hash
    var hashOptions = $.deparam.fragment();
    console.log(hashOptions);
    // apply options from hash
    $('#leftMenu span a').isotope(hashOptions);
})
// trigger hashchange to capture any hash data on init
.trigger('hashchange');

我沒有任何錯誤。 但是它不是過濾器。

我可以收到警報(“ Hello”)。

有任何想法嗎??

我找到了解決方案。 我的js代碼有錯誤。

這是代碼

$container.isotope({});


    $('#leftMenu span a').click(function() {
        // 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);
        // set hash, triggers hashchange on window
        $.bbq.pushState(option);
        return false;
    }); 



    $(window).bind('hashchange', function(event) {
        // get options object from hash
        var hashOptions = $.deparam.fragment();
        // apply options from hash
         $container.isotope(hashOptions);
    })
    // trigger hashchange to capture any hash data on init
    .trigger('hashchange'); 

我強調$container.isotope(hashOptions); 是指菜單項,但實際上是指結果容器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM