我正在使用「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);
它正常工作時,我itialize它在一個節點上。 但兩個節點互相干擾:
例如:
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');
}
});
它的工作原理,但只要我初始化:LAST_TIMEBREAK的節點2和Ajax動作也一個又一個
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');
}
});
現在節點1更新'feeds_pagination'。
現在要解決這個問題,我需要有兩個scrollFeedPagination()實例; 是否可以用這樣的語法擴展?
你的'last_time'變量在哪裏聲明?這似乎是你的錯,而不是圖書館的錯。 – Bergi
'last_time'被正式聲明,我只是簡單地省略了那部分,並不重要,即使我發送node2與'last_time2'它將同時具有'last_time'和'last_time2' – CBeTJlu4ok
哦,對,我雖然你是詢問'last_time'被錯誤更新。我現在看到你的問題。 – Bergi