Работает нормально, если вы используете просто .next()
вместо .nextAll().first()
:
http://jsfiddle.net/ambiguous/xdH82/3/
Или если вы используете стандарт .toggle()
вместорасширенный от jQuery-UI:
http://jsfiddle.net/ambiguous/xdH82/4/
Я не знаю, почему есть разница, но обзор внутренних компонентов jQuery, вероятно, показателен.Если вы поиграете с одиночным и двойным щелчком здесь:
http://jsfiddle.net/ambiguous/Nudkh/
Тогда вы увидите, что список .nextAll()
исключает текущий анимационный элемент, ноЯ не знаю почему.
В любом случае, .next('.expand_me')
точно соответствует вашим намерениям, так что я просто согласился бы и пошел дальше.OTOH, эта разница между .next()
и .nextAll().first()
, вероятно, будет беспокоить меня в течение многих дней, надеюсь, кто-то предложит объяснение, чтобы успокоить мой разум.
ОБНОВЛЕНИЕ: Если вы смотритеАнимация с инспектором DOM (например, «проверяющий элемент» в WebKit) показывает, что расширенный .toggle
в jQuery-UI оборачивает анимированный элемент в дополнительный <div>
во время анимации.Поэтому, если вы скажете .nextAll('.expand_me')
, он не найдет нужного вам .expand_me
, поскольку он больше не будет братом или сестрой: он будет ребенком временного брата..next('.clear').next('.expand_me')
удобно не сможет ничего найти, так как временная оболочка заблокирует прямой путь «this -> .clear -> .expand_me», и обработчик щелчка не будет ничего делать при втором щелчке двойного щелчка.
Мне, вероятно, следовало пойти прямо в исходный код jQuery-UI, чтобы выяснить странное поведение .nextAll()
.Ну хорошо, по крайней мере, я знаю, что происходит сейчас.
ОБНОВЛЕНИЕ 2: Лучшим подходом, чем все это .next
дело, было бы явное связывание ссылки с панелью переключения:
<a data-panel="panel-1">
<!--...-->
</a>
<!--...-->
<div id="panel-1" class="expand_me">
<!--...-->
</div>
И:
$('.toggle').click(function() {
$('#' + $(this).data('panel')).stop().toggle('blind', { }, 500);
});
Если у вас более старый jQuery, вам, возможно, придется использовать .attr('data-panel')
вместо .data('panel')
.
Пример: http://jsfiddle.net/ambiguous/pmQR7/1/