Что я хочу сделать, это переключить элемент, когда я нажимаю кнопку. У меня больше кнопок, которые запускают событие переключения. То, что немного сложнее, - если div уже показан, переключается на невидимое, чем показано снова. Дело в том, что элемент, который будет показан, содержит информацию, сгенерированную ajax.jQuery toggle from different button
Я сделал это до такой степени, когда это работает, но цепочка событий закончена, только если я нажимаю на первую кнопку, даже щелкнув.
Вот HTML:
<div class="row">
<button id="classOption1" class="btn btn-primary toggleOptions">firstButton</button>
<button id="classOption2" class="btn btn-primary toggleOptions">secondBotton</button>
<button id="classOption3" class="btn btn-primary toggleOptions">thirdButton</button>
<button id="classOption4" class="btn btn-primary toggleOptions">yet another button</button>
</div>
<div class="classOptions">
//some irrelevant HTML here
</div>
$(".toggleOptions").click(function(){
var trigger = $(".toggleOptions").attr('id');
if (trigger != $(this).attr('id')) {
$(".classOptions").toggle(1000).promise().done(function() {
trigger = $(this).attr('id');
});
$(".classOptions").toggle(1000);
} else {
$(".classOptions").toggle(1000).promise().done(function() {
trigger = $(this).attr('id');
});
}
});
Если я нажимаю на первый firstButton
, затем на secondButton
, это работает. Но если я снова нажму на secondButton
, чтобы скрыть элемент, он просто скрывается и снова отображается. Однако, если я снова нажму на firstButton
, он скрывает элемент по своему усмотрению.
JsFiddle код воспроизведения.
Надеюсь, я сделал себя понятным, а не моим первым языком.
Почему вы повторяете переключатель в условии if: $ (". ClassOptions"). Toggle (1000); если вы удалите его, я почти уверен, что он работает довольно хорошо. – Diego
Внутри условия if отображается элемент, поэтому я переключаю его невидимым, а затем видимым. – dannymitza
как 'var trigger = $ (". ToggleOptions "). Attr ('id');' всегда будет возвращать 'classOption1', поскольку селектор всегда будет захватывать все кнопки. –