2015-06-22 6 views
2

Я пытаюсь сделать изображение с тегами области, где я могу щелкнуть по каждой области и показать предупреждение.«дважды нажмите, нажмите». как этого избежать?

При использовании «нажмите & нажмите« включено », я не могу понять, как избежать стрельбы дважды в режиме рабочего стола с помощью мыши.

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

    $('area').on('tap click', function() { 
     alert($(this).attr('alt')); 
    }); 
}); 

Я искал несколько способов, таких как разделение событий с помощью Boolean, но они на самом деле не работает, как я на самом деле плохо JavaScript ...

Пожалуйста, помогите мне понять это. Большое спасибо!

+1

Я сделал jsfiddle, который должен был воспроизведен ошибку, и это не делает: https://jsfiddle.net/s3m3x4ds/Мое предположение: у вас есть один и тот же код, который дважды включается на странице, и он связывает два события щелчка с одним и тем же элементом. –

+0

@JohnSparwasser Спасибо! Это интересно. Почему этот огонь не срабатывает дважды, но у меня есть:/ – tunping

+1

Вы также можете просто вытащить кран, чтобы узнать, не дает ли эта ошибка. Если он по-прежнему запускает события дважды без привязки события нажатия, вы знаете, что это дублированный код или что-то в этом роде. –

ответ

3

Вы можете попробовать тестирование на 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); 
    } 
}); 
+0

эй прекрасно работает! Большое спасибо! будет отмечен как ответ после обратного отсчета. – tunping

+0

Это вызовет проблемы на устройствах, которые имеют как сенсорный интерфейс, так и интерфейс щелчка. См. Здесь: [JavaScript touchhend против дилеммы щелчка] (http://stackoverflow.com/questions/25572070/javascript-touchend-versus-click-dilemma/44060724#44060724) –