jquery實現下拉展示更多
阿新 • • 發佈:2019-01-26
今天看到公司的需求列表有這樣的一個下拉更多的需求,發現之前沒寫過,都是用別人的,我大致順著想了一下,就是滾動監聽嘛,就寫寫,其實原理很簡單:
- 先給父級設定一個固定高度(否則沒法監聽是否到達底部),
- 對父級滾動監聽
- 判斷是否到達底部,其公式:
父級距離頂部的距離===父級裡面所有孩子的高度-父級自身的高度 - 做出請求或者其他,我這裡每次新增了10個li標籤,當然後面也做了一個ajax請求案例。
- 最後一步需要做的就是:如果到達最後一條應該終止迴圈函式,所以需要知道,資訊總共列表的長度,另外還有:
- 最後一條如果恰好是10條,就容易了,到達條數,終止迴圈函式就行了,
- 如果不足10條,需要將迴圈變數的終止值改為最終的資訊條數,執行迴圈函式,最終銷燬迴圈函式即可。
程式碼如下
css
*{margin: 0;padding: 0;} #box{ height: 320px; overflow-y: auto;} #box li{ line-height: 50px; } #box li:nth-child(2n){background-color: #666; line-height: 60px; } }
- html
<ul id="box">
<li>li1</li>
<li>li2</li>
<li>li3</li>
<li>li4</li>
<li>li5</li>
<li>li6</li>
<li>li7</li>
<li>li8</li>
<li>li9</li>
<li>li10</li>
<li>li11</li>
<li>li12</li>
<li>li13</li>
<li>li14</li>
<li>li15</li>
<li>li16</li>
<li>li17</li>
<li>li18</li>
<li>li19</li>
<li>li20</li>
</ul>
js
// 滾動的次數 var i=0; // 迴圈的最終值 var m=0; $("#box").on("scroll",function () { // 計算出來孩子的高度 var allchildHeight=0; $.each($("#box").children(),function (index,value) { allchildHeight+=value.offsetHeight; }) if($(this).scrollTop()===allchildHeight-$(this