Jquery - Toggle, Show - нужно подождать до следующего эффекта - PullRequest
0 голосов
/ 13 октября 2009

Я использую 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, прежде чем ПОКАЗАТЬ новое.

Боже, я использую какое-нибудь дели .. подожди?

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

1 Ответ

2 голосов
/ 13 октября 2009

Я согласен с @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 был отключен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...