参见示例代码:http://jsfiddle.net/2b8gR/6/
我有它为页面A工作,并希望将它用于页面B,C,D等…但不想为每个新的Ajax请求重写该函数.
大多数代码将保持不变,除了:
>输入next / prev(page_a_next变为page_b_next)
>显示页面div(display_page_a_page变为display_page_b_page)
>显示页码div(display_page_a_number成为display_page_b_number)
> ajax请求网址页面名称(网址:’page_a.PHP?page =’currentPageA,成为网址:’page_b.PHP?page =’currentPageB,)
等等.
如何使Ajax调用和元素更通用,所以我不必多次写这个请求?
注意:我需要能够跟踪它当前正在显示的每个页面(A,B,C等).是的,所有这些都在同一页上
HTML:
<!-- Page A -->
<div>
<span>Page A</span>
<input id="page_a_next" name="page_a_next" type="button" value="Next" data-inline="true" />
<input id="page_a_prev" name="page_a_prev" type="button" value="PrevIoUs" data-inline="true" />
</div>
<div id="display_page_a_page" name="display_page_a_page">
</div>
<div id="display_page_a_number" name="display_page_a_number">
</div>
<!-- Page B -->
<div>
<span>Page B</span>
<input id="page_b_next" name="page_b_next" type="button" value="Next" data-inline="true" />
<input id="page_b_prev" name="page_b_prev" type="button" value="PrevIoUs" data-inline="true" />
</div>
<div id="display_page_b_page" name="display_page_b_page">
</div>
<div id="display_page_b_number" name="display_page_b_number">
</div>
JS:
var currentPageA=1;
var totalPageA=113;
loadPageA();
$("#page_a_next, #page_a_prev").click(function(){
currentPageA = ($(this).attr('id')=='page_a_next') ? currentPageA + 1 : currentPageA - 1;
if(currentPageA<=0) {
currentPageA=1;
$('#page_a_prev').attr('disabled','disabled');
} else if(currentPageA==114) {
currentPageA=113;
$('#page_a_next').attr('disabled','disabled');
} else {
loadPageA();
}
});
function loadPageA(){
$('#page_a_next').attr('disabled','disabled');
$('#page_a_prev').attr('disabled','disabled');
$.ajax({
url: 'page_a.PHP?page='+currentPageA,
type: 'POST',
error : function (){ alert('Error'); },
success: function (data) {
$('#display_page_a_number').html(currentPageA + ' of ' + totalPageA);
$('#display_page_a_page').html(data);
$('#page_a_next').attr('disabled','');
$('#page_a_prev').attr('disabled','');
}
});
}
解决方法:
这里的关键不仅仅是概括你的JS,还要概括你的HTML.您还必须将currentPageA和totalPageA变量更改为数组,以便它们可以包含多个值.
看我的演示:http://jsfiddle.net/Jaybles/b2uRd/
HTML
<!-- Page A -->
<div>
<span>Page A</span>
<input class='pageButton' id="page_a_next" name="page_a_next" type="button" value="Next" data-inline="true"/>
<input class='pageButton' id="page_a_prev" name="page_a_prev" type="button" value="PrevIoUs" data-inline="true" />
</div>
<div id="display_page_a_page" name="display_page_a_page">
</div>
<div id="display_page_a_number" name="display_page_a_number">
</div>
<!-- Page B -->
<div>
<span>Page B</span>
<input class='pageButton' id="page_b_next" name="page_b_next" type="button" value="Next" data-inline="true" />
<input class='pageButton' id="page_b_prev" name="page_b_prev" type="button" value="PrevIoUs" data-inline="true" />
</div>
<div id="display_page_b_page" name="display_page_b_page">
</div>
<div id="display_page_b_number" name="display_page_b_number">
</div>
JS
var currentPage = {'a':1, 'b':1}; //Should go from A to Z
var totalPage = {'a':113, 'b':115}; //Should go from A to Z
$(".pageButton").click(function(){
var a = $(this).attr('name').split("_");
var page = a[1];
var dir = a[2];
currentPage[page] = (dir=='next') ? currentPage[page] + 1 : currentPage[page] - 1;
if(currentPage[page]<=0) {
currentPage[page]=1;
$('#page_' + page + '_prev').attr('disabled','disabled');
} else if(currentPage[page] > totalPage[page]) {
currentPage[page]=totalPage[page];
$('#page_' + page + '_next').attr('disabled','disabled');
} else {
loadPage(page);
}
});
loadPage('a');
function loadPage(page){
$('#page_' + page + '_next').attr('disabled','disabled');
$('#page_' + page + '_prev').attr('disabled','disabled');
$.ajax({
url: 'page_' + page + '.PHP?page='+currentPage[page],
type: 'POST',
error : function (){ document.title='error'; },
success: function (data) {
$('#display_page_' + page + '_number').html(currentPage[page]+ ' of ' + totalPage[page]);
$('#display_page_' + page + '_page').html(data);
$('#page_' + page + '_next').attr('disabled','');
$('#page_' + page + '_prev').attr('disabled','');
}
});
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。