Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 关于;轻触,单击";事件触发两次。如何避免呢?_Javascript_Jquery_Touch Event_Jquery Click Event - Fatal编程技术网

Javascript 关于;轻触,单击";事件触发两次。如何避免呢?

Javascript 关于;轻触,单击";事件触发两次。如何避免呢?,javascript,jquery,touch-event,jquery-click-event,Javascript,Jquery,Touch Event,Jquery Click Event,我正在尝试制作一个带有区域标签的图像,在那里我可以单击每个区域并显示警报 由于“点击并点击”都包括在内,我似乎不知道如何避免在桌面模式下用鼠标点击两次触发事件 $(document).ready(function(e) { $('img[usemap]').something(); $('area').on('tap click', function() { alert($(this).attr('alt')); }); }); 我已经搜索了几种方法,

我正在尝试制作一个带有区域标签的图像,在那里我可以单击每个区域并显示警报

由于“点击并点击”都包括在内,我似乎不知道如何避免在桌面模式下用鼠标点击两次触发事件

$(document).ready(function(e) {
    $('img[usemap]').something();

    $('area').on('tap click', function() {
        alert($(this).attr('alt'));
    });
});
我已经搜索了几种方法,例如使用布尔值分隔事件,但它们并没有真正起作用,因为我对javascript非常不在行


请帮我弄清楚。多谢各位

您可以尝试测试window.ontouchstart,并仅绑定相关事件

$(document).ready(function(e) {
    $('img[usemap]').something();

    function clickArea(){
        alert($(this).attr('alt'));
    }

    if(typeof window.ontouchstart === 'undefined'){
        $('area').on('click', clickArea);
    } else{
        $('area').on('touchstart', clickArea);
    }
});

我制作了一个JSFIDLE,它本应复制错误,但事实并非如此:我猜您的页面中包含了两次相同的代码,并且它将两次单击事件绑定到同一元素。@JohnSparwasser谢谢!那很有趣。为什么这火不烧两次,而我的火烧两次呢?:你也可以把水龙头拿出来看看这是否给你带来了错误。如果它仍然在没有tap事件绑定的情况下触发两次事件,那么您知道它是重复的代码,或者类似的代码。@JohnSparwasser尝试去掉“tap”并只留下“click”,它只触发一次,没有任何错误,但“tap click”也没有给我任何错误,它只触发了两次:/I我必须花更多的时间研究javascript。。谢谢你的帮助!哇,它真漂亮!非常感谢!将在倒计时后标记为应答。这将在具有触摸和单击界面的设备上造成问题。请看这里: