Jquery - Toggle, Show - нужно подождать до следующего эффекта

Я использую 4 ссылки (кнопка подменю) на моем сайте. Каждая ссылка открывает тег DIV.

Эта статистика по умолчанию для тегов DIV скрыта. (с JQuery)

 $('div[class*="my_"]').hide();

После того, как я нажму на подменю, я покажу () тег div, который мне нужен:

$('a#submenu_1').click( function() {

        $('div[class*="my_"]').hide(); // hide all DIV if some of them opened before
        $('div.my_submenu_1').toggle('slow'); 
  });

Это хорошо работает, пока я терпеливо жду, чтобы спрятаться, если другой DIV открыт раньше. Но если я щелкаю слишком быстро между подменю, то иногда jquery не может скрыть тег div, прежде чем ПОКАЗАТЬ новое.

Мой я использую некоторые Дили .. подожди?

Не могли бы вы предложить мне что-нибудь ?!

13.10.2009 11:28:17
1 ОТВЕТ

Я согласен с @Ghommey, но вы также можете сделать шоу как часть обратного вызова для hide (), чтобы вы знали, что все остальные спрятаны первыми.

 $('div[class^="my_"]').stop().hide(0,function() {
      $('div.my_submenu_1').show('slow');
 });

Обратите внимание, что вы могли бы переписать это немного более обобщенно.

 $('a.menu').click( function() {
      var menuID = $(this).attr('href');
      $('div.menu').stop().hide(0,function() {
          $(menuID).show('slow');
      });
      return false;
 });

где ваш HTML выглядит так:

 <a href="#my_menu_1" class="menu">Menu 1</a>
 <a href="#my_menu_2" class="menu">Menu 2</a>
 ...

 <div id="my_menu_1" class="menu">...</div>
 <div id="my_menu_2" class="menu">...</div>

Это имеет преимущество в том, что ссылка действительно работает, если JavaScript отключен.

2
13.10.2009 11:48:33
Это может вызвать проблемы, если вы нажмете очень быстро, не так ли? Кроме того, .stop().hide();это мгновенно
jantimon 13.10.2009 11:47:12
Я использую stop (). Hide () - просто я поместил шоу в обратный вызов, чтобы он не запустился, пока не завершится анимация (hide).
tvanfosson 13.10.2009 11:50:05
... если вы не имеете в виду "нормальную" скорость. Я изменил это, чтобы использовать числовое значение (0) - которое должно быть как можно быстрее.
tvanfosson 13.10.2009 11:54:00
что-то не так с этим. быстрое переключение между ссылками, функция show заморожена, и показана только часть div ...
user189026 14.10.2009 16:14:27