Поведение метода stop()

282
10 февраля 2017, 02:27

Есть блок и скрытый абзац. При щелчке по блоку абзац анимационно появляется. У анимации отображения есть метод stop со значениями 0,0(false, false). Но так же есть Условные операторы: if который не выполняется первый раз. В его теле тоже есть stop но, со значениями 1,1(true, true). Вопрос: почему даже если if не выполняется stop ведёт себя будто у него значение 1,1 ?

$(document).ready(function(){  
 
$('.q1').click(function(){  
if($(this).next().is(':visible')) // Это не выполняется т.к. Абзац ещё не виден 
$(this).next().stop(true,true).slideUp(); // Это не выполняется т.к. Абзац ещё не виден 
 
$(this).next().stop(0,0).slideToggle();//Так почему у stop ведёт себя будто у него значение true,true ? 
});  
 
});
*{ 
  margin:0; 
  padding:0; 
} 
.q1{ 
  width:50px; 
  height:50px; 
  background: red; 
} 
p{ 
    width:150px; 
  height:300px; 
  background: black; 
  display:none; 
}
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> 
<div class="q1"></div> 
<p></p>

Answer 1

Давайте разберемся, что происходит когда вы нажимаете 2 раза подряд по кнопке.

1 нажатие

.is(':visible')) Тут у нас false пропускаем .stop(true,true).slideUp();

.stop(0,0).slideToggle(); Абзац начинает появляться. Тут все понятно.

2 нажатие

.is(':visible')) Тут у нас true. Хоть абзац еще не весь появился, но он уже виден!

.stop(true,true).slideUp(); Прыгаем в конец анимации. И начинаем скрывать блок.

.stop(0,0).slideToggle(); Стопорим анимацию в самом начале и начинаем скрывать блок.

READ ALSO
Как подключить php скрипт?

Как подключить php скрипт?

Как подключить PHP скрипт к файлу HTML без вкраплений кода, чтобы код выполнялся при загрузке страницы?

470
как сделать? индекс или прозрачность или что?

как сделать? индекс или прозрачность или что?

Как сделать так чтоб выпадающее было поверх слайдера?

301
Сделать все меньше

Сделать все меньше

Верстал сайт и забыл что все время у меня % в браузере стоял 80(ctrl и два раза колесиком мыши на себя) теперь когда ставлю нормальный показ (100%)...

327
Как распарсить HTML в .NET?

Как распарсить HTML в .NET?

Необходимо извлечь все URL из атрибутов href тегов a в HTML страницеЯ попробовал воспользоваться регулярными выражениями:

1512