2

このような場合があるので、クリックしたリンクに無限スクロール プラグインを再バインドし、新しい URL を渡して、後で生成されるコンテンツ セクションを変更したいと考えています。

これまでのところ、無限スクロールをトリガーし、最初にクリックされたリンクでセクションを渡すことができます..その後、別のリンクをクリックすると、URL リンクまたはセクションが再バインドされません。生成されるコンテンツが異なります。

morelessここに私のコードです..

HTML

<li class="active"><a href="#" title="" data-filter=".w-all" class="w-filter">View All</a></li>
        <li><a href="#" title="" data-filter=".w-branding" class="w-filter">Branding</a></li>
        <li><a href="#" title="" data-filter=".w-graphic" class="w-filter">Graphic</a></li>
        <li><a href="#" title="" data-filter=".w-website" class="w-filter">Website</a></li>
        <li><a href="#" title="" data-filter=".w-photography" class="w-filter">Photography</a></li>

jQuery

$('a.w-filter').click(function(e){
    var selector = $(this).attr('data-filter');
    var section = selector.split('-');
    $('#page_nav a').attr('href', 'pager/1/'+section[1]);


    $(window).unbind('.infscr');

    $container.infinitescroll({  
        navSelector : '#page_nav',
        nextSelector : '#page_nav a',
        itemSelector : '.item',
        loading: {      
            finishedMsg: 'Hmm, I guess that\'s all we got.',    
            img: 'loading.gif',    
            msgText: '<em>Loading more projects.</em>'   
        },
        pathParse: function (path, currentPage) {
          var chunkedUrl = ['/pager/', '/'+section[1]];
          return chunkedUrl;
        }


    });

    $container.infinitescroll('retrieve');


    e.preventDefault();
});

それはできますか?

4

2 に答える 2

1

最後に、この無限スクロールプラグインで答えを見つけましたカスタムクエリでパスを変更します

プラグインのソースを少し変更する必要がありますが、その後は魅力的に機能します!

//line 67
$.infinitescroll.prototype = {
   //My custom parameters
    pageType: "&type=items",
    categoryParam: "&category=shoes",
    /*  
        ----------------------------
        Private methods
        ----------------------------
        */

男のおかげで..

私はこれに関していくつかの問題を再び発見しました..そのため、いずれかのセクションが 0 の結果を返すと、プラグインはインスタンスを破棄する 'end' 関数を呼び出します。「バインド」機能を使用してインスタンスを再バインドしようとしましたが、うまくいきませんでした。その「取得」機能は、破棄される前の前のインスタンスの最後の状態を終了メッセージ テキストとして呼び出すだけです。私はまだ新しいインスタンスを再バインドすることができません..

これは私が作成した唯一の代替手段であり、n もプラグイン ソースを変更する必要があります。セクションが 0 の結果を返す場合、「終了」関数は呼び出されませんが、プラグインは終了したテキスト メッセージを表示しなくなります。

// near line 356, put comments tag before if(children.length === 0) to its closing brackets

// if it didn't return anything
/*if (children.length === 0) {
    return this._error('end');
}*/

// use a documentFragment because it works when content is going into a table or UL
frag = document.createDocumentFragment();

それでも、誰かがこれを正しい方法で修正するのを手伝ってくれることを願っています..

于 2013-08-24T18:22:48.940 に答える
0

試してみてください$container.infinitescroll('destroy')githubの 2.0 バージョンを使用している場合は、動作するはずです (少なくとも、ソース コードを見ればわかります)。

于 2013-08-24T16:43:49.770 に答える