jQuery教程 $()包裝函數(shù)來實(shí)現(xiàn)數(shù)組元素分頁(yè)效果
最近一周在做中文站搜索禮品widget的需求,這個(gè)需求中有一個(gè)分頁(yè)的功能;具體demo可以參見下圖:

對(duì)應(yīng)的js應(yīng)用文件是同一個(gè),頁(yè)面中后面的offer數(shù)據(jù)已經(jīng)埋好了,只是啟用了css display:none樣式把后面的offer元素隱藏了?,F(xiàn)在要求對(duì)已存在的頁(yè)面元素實(shí)現(xiàn)上下分頁(yè)效果,也就是頁(yè)面元素總集可以通過$(.class)獲得,然后來實(shí)現(xiàn)分頁(yè)功能。
按照傳統(tǒng)的一般做法,用jQuery可寫成如下:
var total=$(.class).length; //取得需要分頁(yè)的元素的總個(gè)數(shù)
var radio=3;//根據(jù)寬窄屏獲得每頁(yè)顯示offer條數(shù):
var pageSize=parseInt(total/radio); //獲得總頁(yè)數(shù);
if(total % radio !=0){
pageSize+=1;
}
var currentPage=1; //當(dāng)前頁(yè)為第一頁(yè)
//向前翻頁(yè)的代碼:
$(.leftArrow,parentElem).bind('click',function(e){
var index=currentPage-1;
if(currentPage==1){
return;
}else{
$(.class).css('display','none');
var elemIndex=index*radio; //數(shù)組中起始要顯示的元素的指針
$(.class).eq(elemIndex).css('display','');
$(.class).eq(elemIndex+1).css('display','');
$(.class).eq(elemIndex+2).css('display','');
//上面三句代碼可用next()重寫成
//$(.class).eq(elemIndex).css('display','')
// .next().css('display','')
// .next()..css('display','');
currentPage=index;
}
})
//向后翻頁(yè)的代碼:
$(.rightArrow,parentElem).bind('click',function(e){
var index=currentPage+1;
if(currentPage==pageSize){
return;
}else{
$(.class).css('display','none');
var elemIndex=index*radio; //數(shù)組中起始要顯示的元素的指針
$(.class).eq(elemIndex).css('display','');
$(.class).eq(elemIndex+1).css('display','');
$(.class).eq(elemIndex+2).css('display','');
//上面三句代碼可用next()重寫成
//$(.class).eq(elemIndex).css('display','')
// .next().css('display','')
// .next()..css('display','');
currentPage=index;
}
})
大家發(fā)現(xiàn)沒有,在向后翻頁(yè)的代碼中,無論最后一頁(yè)只有1條offer,2條offer,還是全部3條offer,我都用同樣的代碼,不做任何判斷
$(.class).eq(elemIndex).css('display',");
$(.class).eq(elemIndex+1).css('display',");
$(.class).eq(elemIndex+2).css('display',");
這3條語句連續(xù)調(diào)用。
也就是說,elemIndex有可能越界,即elemIndex>$(.class).length,即使在這樣的情況下,$(.class).eq(elemIndex+1).css('display',")照樣沒有問題,瀏覽器不會(huì)報(bào)錯(cuò),js照常執(zhí)行,最終結(jié)果照樣能完美展示。這要感謝jQuery的包裝函數(shù)產(chǎn)生的juery對(duì)象,如果elemIndex>=$(.class).length,$(.class).eq(elemIndex+1)返回的是一個(gè)空jquery元素對(duì)象,雖然它沒有對(duì)應(yīng)到DOM中的元素,但它還是一個(gè)jQuery對(duì)象,因此調(diào)用.css()方法不會(huì)出錯(cuò),雖然頁(yè)面沒有任何變化效果;
通過這個(gè)例子,就能夠理解為什么jQuey對(duì)不匹配的元素仍然返回jQuery Object,而不是null,這種思想對(duì)數(shù)組分頁(yè)操作來說,提供了極大的便利性,因?yàn)楸苊饬藬?shù)組索引越界引起程序錯(cuò)誤,導(dǎo)致js中斷執(zhí)行的情況,簡(jiǎn)化了分頁(yè)代碼中大量的數(shù)組索引越界判斷。
- jQuery根據(jù)元素值刪除數(shù)組元素的方法
- jquery操作對(duì)象數(shù)組元素方法詳解
- jquery 動(dòng)態(tài)增加刪除行的簡(jiǎn)單實(shí)例(推薦)
- jquery刪除table當(dāng)前行的實(shí)例代碼
- jQuery刪除節(jié)點(diǎn)用法示例(remove方法)
- jq實(shí)現(xiàn)左滑顯示刪除按鈕,點(diǎn)擊刪除實(shí)現(xiàn)刪除數(shù)據(jù)功能(推薦)
- jQuery增加、刪除及修改select option的方法
- jQuery 獲取頁(yè)面li數(shù)組并刪除不在數(shù)組中的key
- 基于jQuery實(shí)現(xiàn)表格的查看修改刪除
- jQuery實(shí)現(xiàn)表格行和列的動(dòng)態(tài)添加與刪除方法【測(cè)試可用】
- jquery刪除數(shù)組中重復(fù)元素
相關(guān)文章
jQuery HTML設(shè)置內(nèi)容和屬性操作實(shí)例分析
這篇文章主要介紹了jQuery HTML設(shè)置內(nèi)容和屬性操作,結(jié)合實(shí)例形式分析了jQuery HTML設(shè)置內(nèi)容和屬性相關(guān)函數(shù)與操作注意事項(xiàng),需要的朋友可以參考下2020-05-05
Jquery阻止事件冒泡 event.stopPropagation
幫朋友寫了一個(gè)小效果,單擊標(biāo)簽后標(biāo)簽變色并添加一個(gè)叉的圖片,點(diǎn)擊叉標(biāo)簽恢復(fù)原樣,具體效果請(qǐng)點(diǎn)擊下面的result2011-12-12
jQuery的實(shí)現(xiàn)原理的模擬代碼 -4 重要的擴(kuò)展函數(shù) extend
在上兩篇文章中,我們看到每次要通過 jQuery 的原型增加共享方法的時(shí)候,都需要通過 jQuery.fn 一個(gè)個(gè)進(jìn)行擴(kuò)展,非常麻煩.2010-08-08
基于ajax及jQuery實(shí)現(xiàn)局部刷新過程解析
這篇文章主要介紹了基于ajax及jQurey實(shí)現(xiàn)局部刷新過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
基于jQuery實(shí)現(xiàn)簡(jiǎn)單的折疊菜單效果
這篇文章主要介紹了基于JQuery實(shí)現(xiàn)簡(jiǎn)單的折疊菜單效果,這個(gè)功能實(shí)現(xiàn)起來很簡(jiǎn)單,需要的朋友可以參考下2015-11-11

