我正在使用“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() 实例;是否可以使用这样的语法进行扩展?