jQuery   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了事件 – 在taphold jQuery Mobile 1.1.1之后触发的tap事件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用与jQuery Mobile 1.1.1捆绑在一起的Phonegap为iOS开发应用程序.我的页面上有一个div,它正在监听tap和taphold事件.

我面临的问题是,一旦我抬起手指,敲击事件就会触发敲击事件.我该如何防止这种情况?
提供了一个解决方here,但这是唯一的方法吗?有点消除了为tap& amp;有两个不同事件的重点.如果您需要使用布尔标志来区分这两者,请使用taphold.

以下是我的代码

$('#pageOne').live('pageshow',function(event) {
    $('#divOne').bind('taphold',function (event) {
       console.log("TAP HOLD!!");    
    });

    $('#divOne').bind('tap',function () {
      console.log("TAPPED!!");
    });
});

非常感谢帮助.谢谢!

解决方法

[试过和测试]
我检查了jQuery Mobile的实现.他们每次在’vmouseup”’taphold’之后开始’tap’活动.

如果’taphold’被解雇,解决方法是不要触发’tap’事件.根据需要创建自定义事件或修改源,如下所示:

$.event.special.tap = {
    tapholdThreshold: 750,setup: function() {
        var thisObject = this,$this = $( thisObject );

        $this.bind( "vmousedown",function( event ) {

            if ( event.which && event.which !== 1 ) {
                return false;
            }

            var origTarget = event.target,origEvent = event.originalEvent,/****************Modified Here**************************/
                tapfired = false,timer;

            function clearTapTimer() {
                clearTimeout( timer );
            }

            function clearTapHandlers() {
                clearTapTimer();

                $thiS.Unbind( "vclick",clickHandler )
                    .unbind( "vmouseup",clearTapTimer );
                $( document ).unbind( "vmousecancel",clearTapHandlers );
            }

            function clickHandler( event ) {
                clearTapHandlers();

                // ONLY trigger a 'tap' event if the start target is
                // the same as the stop target.
                /****************Modified Here**************************/
                //if ( origTarget === event.target) {
                 if ( origTarget === event.target && !tapfired) {
                     triggerCustomEvent( thisObject,"tap",event );
                 }
            }

            $this.bind( "vmouseup",clearTapTimer )
                .bind( "vclick",clickHandler );
            $( document ).bind( "vmousecancel",clearTapHandlers );

            timer = setTimeout( function() {
                tapfired = true;/****************Modified Here**************************/
                triggerCustomEvent( thisObject,"taphold",$.Event( "taphold",{ target: origTarget } ) );
            },$.event.special.tap.tapholdThreshold );
        });
    }
};

大佬总结

以上是大佬教程为你收集整理的事件 – 在taphold jQuery Mobile 1.1.1之后触发的tap事件全部内容,希望文章能够帮你解决事件 – 在taphold jQuery Mobile 1.1.1之后触发的tap事件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。