我正在使用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似乎与我目前的问题有关,我明天会对此进行审核 - 但现在是时候回家了。
答案 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();
}
});
我没有使用过上述插件,但这是我在浏览插件代码时所看到的内容。
希望它对你有所帮助。