0

我正在使用jQuery ScrollExtend 插件来尝试向网站添加无限滚动,该插件的语法如下:

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

可选地,此插件可以通过添加onSuccess到选项数组来进行回调。

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

第二个:

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);
        }
    }
);

所以,我想现在的问题是如何让插件看到这些更新的变量?

这个 stackoverflow 线程似乎与我当前的问题有关,我明天会回顾这个 - 但现在是我回家的时候了。

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 回答