我目前已经创建了一个分页Javascript类,当您获得超过10个页面时,它将自动对注释进行分页。这样可以正常工作,但是我只想在页面上有10个以上的注释时设置一些CSS属性(为按钮添加空间以便在页面之间切换)。这可以在ajax成功完成,但我想保留paginate.js
以便其他应用程序可以使用它(应用程序的其他部分不需要添加填充),而不是一堆if if否则只在一个场景中添加填充。那么,有没有什么方法可以将事件绑定到外部的ajax函数的成功?例如,我当前的页面包含以下文件:
pagination.js
detail.js
Pagination通过从detail.js传递以下参数来运行ajax调用:
p = new paginate({
table_id: 't1',
pageselect_max: 7,
rpp_options: [5,10,25,50],
rpp: 5,
columns: [''],
wildcard: stock_symbol,
url: 'trader/stocks/ajax/',
action: 'paginate_comments',
noresults: false
});
这就是agax在pagination.js中的样子:
this.get_results = function() {
oThis = this; // Needed because inside the success function 'this' points to something else
$.ajax({
type: "POST",
url: this.url,
data: "action="+this.action+"&rpp="+this.rpp+"&page="+this.page+"&sortBy="+this.sortBy+"&sortDir="+this.sortDir+"&wildcard="+this.wildcard,
dataType: "json",
success: function(json) {
if (json.error) {
alert(json.error);
}
else {
var data = json.data;
oThis.count = data.count;
$("#p_count").text(oThis.count);
var resText = oThis.count == 1 ? "result" : "results";
$("#p_results").text(resText);
if (!data.disable_cufon) {
Cufon.replace('h2');
Cufon.replace('h1');
}
oThis.results = data.results;
oThis.update_pageselect();
oThis.display_results();
oThis.do_rpp();
}
},
error: function(error) {
alert(error.responseText);
}
});
}
我希望能够在detail.js中引用成功并运行它:
if(p.maxPages > 1){
$("#commentscontainer .cmtgocontainer").css("margin-top","48px");
}
我知道这可以通过改变异步属性来实现,但这似乎是不好的做法。没有改变pagination.js的任何更好的方法吗?
答案 0 :(得分:3)
您可以创建自己的回调函数并在pagination.js中调用它:
例如:
//In your success callback:
if (typeof oThis.onPaginateComplete === "function")
oThis.onPaginateComplete();
然后您可以详细编写以下内容.js:
p.onPaginateComplete = function() {
if (this.maxPages > 1) {
$("#commentscontainer .cmtgocontainer").css("margin-top","48px");
}
};