Я новичок в JQuery. Я искал divs, чтобы спрятаться и показать на моей домашней странице. Это хорошо работает со следующим кодом:
jQuery(document).ready(function () {
jQuery(".tab-filteractivation2").hide(); //hide at the beginning
function hideDiv(e) {
e.preventDefault();
jQuery(this).text('open it') // text after first click
.click(showDiv)
.siblings(".tab-filteractivation2").hide(400);
}
function showDiv(e) {
e.preventDefault();
jQuery(this).text('close it') // text when it is open
.click(hideDiv)
.siblings(".tab-filteractivation2").show(400);
}
jQuery('.hover').click( showDiv );
Это мой HTML-код:
<div class="filter">
<a class="hover" href="javascript:;">open</a>
<div class="tab-filteractivation2">test</div>
</div>
Мой DIV называется tab-filteractivation2, и он появляется и исчезает, как я хочу. Но только для первого щелчка: Как только я нажимаю более одного раза кнопку show, она выглядит как-то экспоненциально.
Ниже приводится небольшое пошаговое введение: 1. Я нажимаю "открывать", и вкладка появляется с задержкой (400) (с текстом "тест"). 2. Я нажимаю "закрыть" и табуляция исчезает с задержкой (400) (пока здесь все не будет нормально). 3. Я снова нажимаю "открыть его" и появляется вкладка, но сначала он появляется с задержкой (400), а затем сразу же исчезает с задержкой (400), а затем снова появляется с задержкой (400). 4. Я нажимаю "закрыть" и кратковременно исчезает с задержкой (400), и появляется с задержкой, и она исчезает с задержкой и появляется с задержкой и исчезает с задержкой (400).
Поэтому я написал это как-то экспоненциально. Это будет от щелчка щелчком все больше и больше действий до тех пор пока оно не будет закончено. Но я был бы счастлив, если бы эта задержка была однажды, а все остальные шаги не были.
Может ли кто-нибудь помочь мне в этой функции и сказать, как я мог бы предотвратить это? Это было бы прекрасно!
Спасибо заранее. И я надеюсь, что это было как-то понятно для вас, ребята.
вы можете использовать toggle()
:
jQuery('.hover').click(function (e) {
e.preventDefault();
var $this = $(this);
$this.siblings(".tab-filteractivation2").stop().toggle(400, function () {
$this.text($(this).is(':visible') ? 'close it' : 'open it');
});
});
Пытаться:
jQuery(".tab-filteractivation2").hide(); //hide at the beginning
function showDiv(e) {
e.preventDefault();
if(jQuery(this).text() == 'close it'){
jQuery(this).text('open it').siblings(".tab-filteractivation2").hide(400);
}
else{
jQuery(this).text('close it').siblings(".tab-filteractivation2").show(400);
}
}
jQuery('.hover').click( showDiv );
$('.hover').on('click', function() {
if($('tab-filteractivation2').is(':visible')) {
$('.tab-filteractivation2').slideUp(400);
} else {
$('.tab-filteractivation2').slideDown(400);
}
});
Вышеупомянутый код будет делать то, что вы пытаетесь сделать гораздо более простым способом. Если вы пытаетесь понять, как это работает, дайте мне крик :).
Вы добавляете прослушиватель событий каждый раз, когда вы скрываете или показываете вкладку. Вам нужно инициализировать прослушиватели узлов отдельно.