В настоящее время я создал класс Javascript для разбивки на страницы, который автоматически разбивает комментарии на страницы, когда вы получаете более 10 страниц. Это прекрасно работает, но я хотел бы установить некоторые свойства CSS, только если на странице более 10 комментариев (добавьте место для кнопок для переключения между страницами). Это МОЖЕТ быть сделано в успехе ajax, но я хочу сохранить paginate.js
, чтобы его можно было использовать в остальной части моего приложения (другие части приложения не нуждались в добавлении отступов), а не с кучей операторов if и else добавить отступы только в одном сценарии. Итак, есть ли способ, которым я могу связать событие с успехом функции ajax извне? Например, моя текущая страница содержит следующие файлы:
pagination.js
detail.js
Пагинация запускает вызов ajax, передавая ему следующие аргументы из detail.js:
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
});
Вот как выглядит ajax внутри 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?