本篇文章給大家分享的是有關(guān)使用jQuery怎么實現(xiàn)一個左滑刪除按鈕,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)棗莊,十年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220實現(xiàn)思路
為了說明我的實現(xiàn)思路,做了兩個圖來輔助說明。
首先,請看圖1。在圖中,我們設(shè)置每一行的寬度超過瀏覽器的寬度,其超出的部分就是放置按鈕的區(qū)域。由于超出了瀏覽器的大寬度,因此按鈕區(qū)域此時是不可見的,只能顯示左側(cè)的常規(guī)信息部分。
圖1 普通狀態(tài)
接下來,我們監(jiān)聽左側(cè)常規(guī)信息區(qū)域,監(jiān)聽滑動事件(具體如何監(jiān)聽先不考慮)。當我們監(jiān)聽到左滑事件時,我們讓相應(yīng)行左偏移,讓按鈕顯示出來,同時左側(cè)超出的部分被遮擋(請看圖2)。
圖2 左滑狀態(tài)
當我們右滑時,我們再讓相應(yīng)行回復(fù)到左偏移為0的時候就行了。
關(guān)鍵實現(xiàn)方式
對于左滑和右滑,我們通過設(shè)定常規(guī)信息區(qū)域的marin-left來實現(xiàn),當設(shè)定margin-left為負值時,實現(xiàn)左滑,當再次設(shè)定margin-left為0時,實現(xiàn)右滑。
對于滑動事件監(jiān)聽,通過監(jiān)聽鼠標(手指)按下和抬起來實現(xiàn),根據(jù)兩點的X坐標的差值的正負判定是右滑還是左滑。
完整代碼
需要注意的是,我在測試的時候用的是chrome的普通模式和mobile模擬器模式,發(fā)現(xiàn)兩種模式下監(jiān)聽是不一樣的,因此我寫了兩種監(jiān)聽,這樣至少有一種會執(zhí)行。也許有其他更好的適配方法,但不作為此處的重點。當然也歡迎大家賜教。
至于代碼部分,用了jQuery,其實不用也沒啥問題的,動畫滑動和監(jiān)聽都可以用純js寫,但是由于這不是這里的重點,那么為什么不用jQuery呢?成功者站在巨人的肩膀上,而且咱也沒有jQuery寫的好 (。?`ω´?)
2015/11/13更新
有位同學提出說代碼在QQ手機瀏覽器和Opera手機瀏覽器等中沒有滑動效果,找了一下大概是帖子里說的原因,于是根據(jù)帖子里的提示以及那位同學的一個大神同學的提示,做了一下修改。主要是在touchmove事件中根據(jù)橫縱坐標位移來判斷是否阻止默認事件,如下:
// 橫向位移大于縱向位移,阻止縱向滾動 if (Math.abs(delta.x) > Math.abs(delta.y)) { event.preventDefault(); }
2016/02/25更新
qq_25558115同學提到:“如果再能給大家提供出只能有一條記錄可以左滑, 倘若滑動其他的記錄,則有左滑記錄的要回到原位”。于是進行了簡單實現(xiàn)。主要思路如下:
// 用一個變量記錄上一次左滑的對象 var lastLeftObj; // 在左滑發(fā)生的時候,判定上一個左滑的對象是否存在,若存在,且不是當前被左滑的對象,則將其右滑 // 同時,記錄新的左滑對象 // 在右滑發(fā)生時,將上一個左滑對象清空 if (左滑) { pressedObj左滑 lastLeftObj && lastLeftObj != pressedObj && lastLeftObj右滑 lastLeftObj = pressedObj; // 記錄上一個左滑的對象 } else if (右滑) { pressedObj右滑 lastLeftObj = null; // 清空上一個左滑的對象 }
2016/09/06更新
根據(jù)馬燦發(fā)同學提出的bug進行修改:
右滑時進行判斷,僅當要右滑的對象(pressedObj)是上一次左滑的對象(lastLeftObj)時才將對象右滑并清空lastLeftObj。
if (pressedObj == lastLeftObj) {...}
根據(jù)girlyougo同學的提議,添加“在除本行外的其他區(qū)域點擊時均復(fù)位當前左滑按鈕”的功能。思路為在滑動結(jié)束時,判定pressedObj!=lastLeftObj,即可知點擊/滑動的對象為其他對象:
// 點擊除當前左滑對象之外的任意其他位置 if (lastLeftObj && pressedObj != lastLeftObj) { $(lastLeftObj).animate({marginLeft:"0"}, 500); // 右滑 lastLeftObj = null; // 清空上一個左滑的對象 }
實際上,在添加了上述功能之后,前面提到的bug不存在了。不過此處保留了消除bug的那部分代碼。
更新后的完整代碼如下:
左劃出現(xiàn)刪除按鈕,右滑隱藏 蠟筆小新在同行的小伙伴中提到了你1分鐘前喬巴你看不到我哦1分鐘前賤行賤遠回憶里想起模糊的小時候,云朵漂浮在藍藍的天空,那時的你說,要和我手牽手,一起走到時間的盡頭1分鐘前小黃人哈哈哈哈哈……暑假來看小黃人電影哦~哈哈哈……1分鐘前
以上就是使用jQuery怎么實現(xiàn)一個左滑刪除按鈕,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司行業(yè)資訊頻道。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。