安卓手機的touchend事件不觸發問題


問題描述

$(document).on("touchstart touchmove",".btn-highlight",function(event){
        $(this).addClass("hover");
    }).on("touchend touchcancel",".btn-highlight",function(event){
        $(this).removeClass("hover");
    });

起初想用這一段代碼來模擬部分按鈕的高光效果(就是點擊一個按鈕之后會有個不同的樣式,類似PC的hover)

但是發現一個問題,就是在安卓手機上,下面的這個方法卻經常不觸發,非常的偶爾,着實令吾等煩惱。

 

后經查閱資料發現瀏覽器的默認事件影響了我們這個事件的觸發。那么就涉及阻止默認事件了,很簡單,加上event.preventDefault();

最終可用代碼為

$(document).on("touchstart touchmove",".btn-highlight",function(event){
        $(this).addClass("hover");
        event.preventDefault();
    }).on("touchend touchcancel",".btn-highlight",function(event){
        $(this).removeClass("hover");
    });

在css里面對.btn-highlight加上對應的樣式就可以看到效果了,如按鈕a與按鈕b想顯示不同的效果,那么

先給a和b都加上.btn-highlight

CSS中:

a.hover{/*第一種樣式*/}

b.hover{/*第二種樣式*/}

 

該問題續集~~~

發現這樣寫之后,如果那個按鈕是鏈接呢???跳轉不了,因為禁用默認事件了,現在把touchstart和touchmove分開寫就OK了

$(document).on("touchstart",".btn-highlight",function(){
        $(this).addClass("hover");
    }).on("touchmove",".btn-highlight",function(event){
        event.preventDefault();
    }).on("touchcancel touchend",".btn-highlight",function(event){
        $(this).removeClass("hover");
    });

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM