【发布时间】:2013-11-01 01:55:12
【问题描述】:
我正在使用“scrollPagination”javascript 进行 ajax 分页。 这是一个代码:
(function( $ ){
$.fn.scrollFeedPagination = function(options) {
var opts = $.extend($.fn.scrollFeedPagination.defaults, options);
var target = opts.scrollTarget;
if (target == null){
target = obj;
}
opts.scrollTarget = target;
return this.each(function() {
$.fn.scrollFeedPagination.init($(this), opts);
});
};
$.fn.stopScrollPagination = function(){
return this.each(function() {
$(this).attr('scrollPagination', 'disabled');
});
};
$.fn.scrollFeedPagination.loadContent = function(obj, opts){
console.log(opts);
var target = opts.scrollTarget;
var mayLoadContent = ($(target)[0].scrollHeight - $(target).scrollTop()) == $(target).height();
if (mayLoadContent){
if (opts.beforeLoad != null){
opts.beforeLoad();
}
$(obj).children().attr('rel', 'loaded');
$.ajax({
type: 'POST',
url: opts.contentPage,
data: opts.contentData,
success: function(data){
console.log(data);
console.log(1);
var selector = target.selector;
var response = $(data).find(selector).children();
$(obj).append(response);
var objectsRendered = $(obj).children('[rel!=loaded]');
if (opts.afterLoad != null){
opts.afterLoad(objectsRendered);
}
},
dataType: 'html'
});
}
};
$.fn.scrollFeedPagination.init = function(obj, opts){
var target = opts.scrollTarget;
$(obj).attr('scrollPagination', 'enabled');
$(target).scroll(function(event){
if ($(obj).attr('scrollPagination') == 'enabled'){
$.fn.scrollFeedPagination.loadContent(obj, opts);
}
else {
event.stopPropagation();
}
});
$.fn.scrollFeedPagination.loadContent(obj, opts);
};
$.fn.scrollFeedPagination.defaults = {
'contentPage' : null,
'contentData' : {},
'beforeLoad': null,
'afterLoad': null ,
'scrollTarget': null,
'heightOffset': 0
};
})( jQuery );
当我在一个节点上初始化它时它工作正常。 但是两个节点互相干扰:
示例:
node1.pagination({
'contentPage': ajaxurl,
'contentData': {
action: 'chat_pagination',
'last_time' : last_time,
},
'scrollTarget': node1,
'beforeLoad': function() {},
'afterLoad': function(elementsLoaded) {
last_time = node1.children('div').last().data('last-id');
}
});
它可以工作,但只要我初始化另一个
node2.pagination({
'contentPage': ajaxurl,
'contentData': {
action: 'feeds_pagination',
'last_time' : last_time,
},
'scrollTarget': node2,
'beforeLoad': function() {},
'afterLoad': function(elementsLoaded) {
last_time = node2.children('div').last().data('last-id');
}
});
现在 node1 使用 node2 的 last_time 更新,ajax 操作也“feeds_pagination”。
现在要解决这个问题,我需要两个 scrollFeedPagination() 实例; 可以用这样的语法扩展吗?
【问题讨论】:
-
您的
last_time变量在哪里声明?这似乎是你的错,而不是图书馆的错。 -
last_time被正确声明,为了简单起见,我只是省略了那部分。没关系,即使我发送带有“last_time2”的node2,它也会同时拥有last_time和last_time2 -
哦,对了,我虽然你在问
last_time更新不正确。我现在看到了你的问题。
标签: javascript ajax oop prototype