每次迭代后更新jQuery插件参数

时间:2012-08-08 08:34:56

标签: jquery ajax jquery-plugins jquery-callback

我正在使用jQuery ScrollExtend plugin以尝试向网站添加无限滚动,起诉此插件的语法如下:

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;

因此,这样可以轻松设置初始网址:

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

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

This stackoverflow thread似乎与我目前的问题有关,我明天会对此进行审核 - 但现在是时候回家了。

1 个答案:

答案 0 :(得分: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();
    }
});

我没有使用过上述插件,但这是我在浏览插件代码时所看到的内容。

希望它对你有所帮助。