2013-06-03 2 views

ответ

0

Это ответ:

(function($) { 

var allPanels = $('.accordion > dd').hide(); 

$('.accordion > dt > a').click(function() { 
    allPanels.slideUp(); 

    if($(this).parent().next().is(':hidden')) 
    { 
     $(this).parent().next().slideDown(); 
    } 

    return false; 
}); 

})(jQuery); 
0

Намного проще и пуленепробиваемый подход: LIVE DEMO

var allPanels = $('.accordion > dd').hide(); 

$('.accordion > dt > a').click(function(e) { 
    e.preventDefault(); // don't use return false; 
    allPanels.stop().slideUp(); 
    $(this).parent().next('dd').stop().slideToggle(); 
}); 

Хитрость заключается в том, чтобы

  • slideUp все панели
  • но использовать slideToggle на текущий один
  • пуленепробиваемые благодаря правильному использованию .stop()

P.S: Не злоупотреблять return false, использовать правильный event.preventDefault вместо этого.

Смежные вопросы