In jQuery mobile, what's the diff between tap and vclick?

后端 未结 3 535
野性不改
野性不改 2020-12-01 08:25

which event should i use to listen to ? why use vclick? and I just don\'t know which situation to use which.

相关标签:
3条回答
  • 2020-12-01 08:53

    In case of jQuery Mobile Tap used to work only on mobile devices. This is not case any more.

    VClick was created to bridge a gap between click/tap incompatibility among desktop/mobile devices.

    Now days you case freely use tap but there are few problems. Tap will fail on iOS platform. Touchstart should be used instead.

    Examples:

    VClick

    Will work both on desktop and mobile devices.

    • Android 4.1.1 - No delay
    • iOS - No delay
    • Desktop Firefox 19 & Chrome 25.0.1364.152 - No delay

    http://jsfiddle.net/Gajotres/PYPXu/embedded/result/

    $(document).on('pagebeforeshow', '#index', function(){       
        $( document ).on( "vclick", '[data-role="page"]', function() {
            $( this ).append( "<span style='color:#00F;'>vmouseup fired.</span>" );
        });
    });
    

    Tap:

    Tap

    It used to work only on a mobile devices, now works also on a desktop browsers, but will fail on a iOS with a jQuery Mobile version 1.1 and below.

    • Android 4.1.1 - No delay
    • iOS - No delay
    • Desktop Firefox 19 & Chrome 25.0.1364.152 - No delay

    http://jsfiddle.net/Gajotres/k8kSA/

    $(document).on('pagebeforeshow', '#index', function(){       
        $( document ).on( "tap", '[data-role="page"]', function() {
            $( this ).append( "<span style='color:#00F;'>tap fired.</span>" );
        });
    });
    

    Click

    Will work on mobile devices and desktop browsers.

    • Android 4.1.1 - Visible delay (300+ ms)
    • iOS - No delay
    • Desktop Firefox 19 & Chrome 25.0.1364.152 - No delay

    http://jsfiddle.net/Gajotres/L2FHp/

    $(document).on('pagebeforeshow', '#index', function(){       
        $( document ).on( "click", '[data-role="page"]', function() {
            $( this ).append( "<span style='color:#00F;'>click fired.</span>" );
        });
    });
    

    Conclusion

    If you want a backward jQM compatibility stick with VClick, in any other case use Tap.

    0 讨论(0)
  • 2020-12-01 08:55

    I've just noticed a major difference between 'tap' and 'vclick'. 'vclick' fires if you tab to a button and press the enter key - 'tap' does not.

    0 讨论(0)
  • 2020-12-01 09:00

    vclick (virtualized click) simulates the onclick event.

    http://api.jquerymobile.com/vclick/

    Tap event triggers after a quick, complete touch event single target object.

    http://api.jquerymobile.com/tap/

    It depends what you are doing but unless you have a specific reason not to (e.g. supporting desktop and mobile with the same js) I would use tap.

    More information here https://coderwall.com/p/bdxjzg

    0 讨论(0)
提交回复
热议问题