0

Web サイトに無限スクロールを追加するためにjQuery ScrollExtend プラグインを使用しています。このプラグインを訴える構文は次のとおりです。

jQuery('#actualResults').scrollExtend({ 
    'target'          : '#actualResults',     
    'url'             : 'some url', 
    'newElementClass' : 'ajaxArticles'
});

onSuccessオプションで、このプラグインは options 配列に追加することでコールバックを取ることができます。

jQuery('#actualResults').scrollExtend({ 
    'target'          : '#actualResults',    
    'url'             : 'some url', 
    'newElementClass' : 'ajaxArticles',
    ‘onSuccess’       : 'some callback'
});

したがって、URL を除いて、これらの設定は必要なとおりですが、URL の設定に問題があります。

基本的に、URL は次の形式を取る必要があります。

callSearch.php?scope=web&q=the+query&page=1&offset=51

URL を構成するための情報を取得することは難しくありません。

var offset = parseInt($(document).getUrlParam("offset"))

if (isNaN(offset)) 
    offset = 51;
else 
    offset += 51;

var query = $(document).getUrlParam("q");
var scope = $(document).getUrlParam(”scope”);

var url = 'callSearch.php?scope=' + scope + '&q=' + query + '&offset=' + offset;

したがって、初期 URL を設定するのは簡単です。

jQuery('#actualResults').scrollExtend({ 
    'target'          : '#actualResults',     
    'url'             : url, 
    'newElementClass' : 'ajaxArticles'
});

しかし、この最後の段階も問題urlです。51 がオフセットに追加されるように、各実行後に更新するにはどうすればよいでしょうか? たとえば、最初の URL は次のようになります。

callSearch.php?scope=web&q=the+query&page=1&offset=51

そして2番目:

callSearch.php?scope=web&q=the+query&page=1&offset=102

広告など。これを行うにはコールバックを使用する必要があると思いますか? これを機能させるために、誰かが私を正しい方向に向けるのを手伝ってもらえますか?

進捗

私は今、この問題に取り組み始めています。オフセット変数と URL 変数を更新するコールバック関数がありますが、プラグインはこれらの新しい値を取得していないようです。私の完全な JavaScript は次のようになりました。

jQuery(document).ready(
    function() {

        var offset = parseInt($(document).getUrlParam("offset"))

        if (isNaN(offset)) 
            offset = 51;
        else 
            offset += 51;

        var query = $(document).getUrlParam("q");
        var scope = $(document).getUrlParam("scope");

        var url = 'callSearch.php?scope=' + scope + '&q=' + query + '&offset=' + offset;


        jQuery('#actualResults').scrollExtend({ 
            'target'            : '#actualResults',         
            'url'               : url, 
            'newElementClass'   : 'ajaxArticles',
            'onSuccess'         : function() {
                offset += 51;
                url = 'callSearch.php?scope=' + scope + '&q=' + query + '&offset=' + offset;
                runLog();
            }
        });

        function runLog() {
            console.log(offset);
            console.log(url);
        }
    }
);

ですから、ここでの質問は、これらの更新された変数をプラグインに表示させる方法だと思いますか?

このスタック オーバーフロー スレッドは、現在の問題に関連しているようです。明日レビューしますが、今は家に帰る時間です。

4

1 に答える 1

1

プラグインに次の行が表示される場合scrollExtend(行 154)

//
// Set the URL
//                
if ( typeof(settings.url) == 'function' ) {
    url = settings.url.call(this, container);
}
else {
    url = settings.url;
}

設定で関数をURLとして渡すことができ、関数はURLを返すことができるようです。

元:

jQuery('#actualResults').scrollExtend({ 
    'target'            : '#actualResults',         
    'url'               : function(container){
        return 'callSearch.php?scope=' + scope + '&q=' + query + '&offset=' + offset;
    }, 
    'newElementClass'   : 'ajaxArticles',
    'onSuccess'         : function() {
        offset += 51;
        url = 'callSearch.php?scope=' + scope + '&q=' + query + '&offset=' + offset;
        runLog();
    }
});

上記のプラグインを使用したことはありませんが、これは、プラグインのコードを調べたときに見たものから示唆できるものです。

お役に立てば幸いです。

于 2012-08-08T17:19:57.157 に答える