2013-05-02 2 views
-4

Я экспериментировал с jquery и столкнулся с проблемой. http://javascript.nicklewers.co.uk/nav/
На вкладке «Android» я установил его так, чтобы, щелкнув один раз, появится подменю, однако при двойном щелчке появится основное содержимое.Ошибка Jquery dblclick/click

Теперь проблема заключается в следующем: двойной щелчок включает в себя два клика, которые включают открытие и закрытие подменю очень быстро, и это выглядит плохо. Как я могу это предотвратить?

+3

, пожалуйста, напишите код, который, по вашему мнению, не работает. Http://meta.stackexchange.com/questions/125997/something-on-my-web-site-doesnt-work-can-i-just-paste-a -link-to-it – Ejaz

+2

Просто маленький указатель - двойной щелчок полностью _non-standard behaviour_ в веб-браузерах. Вероятно, вы должны реализовать это иначе, вместо того, чтобы полагаться на события, которые люди не знают, как их использовать. –

+0

вы можете попробовать использовать '.mouseenter()' для загрузки подменю и использовать '.click()' в верхнем меню. Имхо улучшает удобство использования. –

ответ

3

попробовать это (с помощью таймера, чтобы знать, если один щелчок или двойной):

alreadyclicked=false; 
$('#android').bind('click',function(){ 
    var el=$(this); 
    if (alreadyclicked) 
    { 
     alreadyclicked=false; // reset 
     clearTimeout(alreadyclickedTimeout); // prevent this from happening 
     // do what needs to happen on double click. 
    } 
    else 
    { 
     alreadyclicked=true; 
     alreadyclickedTimeout=setTimeout(function(){ 
      alreadyclicked=false; // reset when it happens 
      // do what needs to happen on single click. 
      // use el instead of $(this) because $(this) is 
      // no longer the element 
     },300); // <-- dblclick tolerance here 
    } 
    return false; 
}); 
0

Попробуйте задержку перед показа/скрытия подменю. С помощью JS это можно сделать с помощью функции setTimeout().

0
$('#android').dblclick(function(){ 
    $('.content, #subnav').toggle(); 
}); 

Почему вы переключаете как содержимое, так и подменю? Удаление этого решения не решит, но я думаю, что этого не должно быть.