2016-02-22 30 views
1

我們有一個運行jQuery Infinite Scroll Plugin的網站。該插件不再被維護,但它是唯一一個真正爲我們的目的正確服務的人。但是,我的問題是,我們的網站是基於Ajax的。在頁面更改時,觸發器會觸發窗口,從而允許我們檢查無限滾動容器是否存在並啓用無限滾動。如果無限滾動容器不存在,但存在$.infscr,我們將嘗試銷燬先前的實例。在AJAX頁面上銷燬InfiniteScroll

我遇到的問題是,當更改爲另一個頁面時,它似乎不會被正確銷燬,有時會進行AJAX調用以及infscr加載欄顯示。下面是我使用的實例並銷燬插件代碼:

$(window).on('pg-changed', function() { 

    // delete our infinite scroll 
    if(typeof $.infscr !== 'undefined') { 

    $('.snap-inner, .infscr').data('infinitescroll', null); 
    $('.snap-inner, .infscr').infinitescroll('unbind'); 
    $('.snap-inner, .infscr').infinitescroll('destroy'); 
    $('#infscr-loading').remove(); 

    $.infscr.data('infinitescroll', null); 
    $.infscr.infinitescroll('unbind'); 
    $.infscr.infinitescroll('destroy'); 

    delete $.infscr; 
    } 

    // setup our infinite scroll 
    if($('.infscr').length) { 

    $.infscr = $('.infscr').infinitescroll({ 

     // define our navigation selectors 
     navSelector : 'div.infscr-navigation', 
     nextSelector : 'div.infscr-navigation A:first', 
     itemSelector : '.infscr-item', 

     // allow scrolling an overflowed element 
     behavior  : 'local', 
     bufferPx  : 120, 
     binder  : $('.snap-inner'), 

     dataType  : 'html', 

     loading : { 
     msg   : null, 
     selector : '.snap-content', 
     img   : 'data:image/gif;base64,TRIMMED', 
     msgText  : '<span class="infscr-loading">Loading...</span>', 
     } 
    }, function (arrayOfNewElems) { 

     // render background images on our new elements 
     $(this).renderBgImages(); 

    }); 
    } 

}); 

我真的希望你能幫助您,因爲它已經成爲不少問題,現在,射擊滾動,使得AJAX調用和顯示加載條。

+1

它是否曾經進入if(typeof $ .infscr!=='undefin ed')條件? – phenxd

+0

@phenxd感謝您的信息 - 是的,它確實符合我通過輸出到控制檯進行測試的條件,並且在更改頁面時它確實嘗試並銷燬它不起作用。 – Chris

回答

0

我想問題可能是該插件綁定了自身外部元素上的事件。沒有進一步的調試就很難說(插件是否被刪除或者它沒有做到這一點?)。如果是這樣,爲什麼它不能解除事件?等

當你說,我想你是不是裝了一個全新的頁面(這將「重置」的JavaScript。「另一頁上的」

雖然,這取決於閹這可能爲你工作,你可能想嘗試解除綁定在文檔中的所有事件,並開始新鮮。

$(document).add('*').off(); 

應該這樣做。如果是的話,你可以嘗試找出你需要手動解除綁定什麼元素/事件。讓我知道如果這是否有用

+0

明天我會放棄這件事,讓你知道它是怎麼回事。感謝你的幫助!我想調試我可以綁定到所有事件並將它們記錄到控制檯並查看實際滿足此條件的時間 – Chris