Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Выполнение анимации только строго по нажатию кнопки (https://javascript.ru/forum/jquery/8463-vypolnenie-animacii-tolko-strogo-po-nazhatiyu-knopki.html)

vitja 27.03.2010 15:52

Выполнение анимации только строго по нажатию кнопки
 
Здравствуйте, незнаю как это описать даже, постараюсь объяснить, скорее всего этот вопрос уже задавался, ситуация банально простая. Например элементарная функция slideToggle() и баттон, которая её вызывает. Так вот попробуйте быстро понажимать на кнопку $("button") и увидите как весело получается. :blink:


$("button").click(function () {
$("p").slideToggle("slow");
});

Мне же нужно сделать так, чтобы пока анимация не выполнится, $("button") вела себя словно её нет, или была неактивная.
Как это можно сделать, пробовал на 1 или 0 помудрить, ничего хорошего не вышло. Помогите избавиться от этого, спасибо.

micscr 27.03.2010 16:05

$("button").click(function () {
  var $who = $(this);
  if (!$who.data('DO')) {
    $who.data('DO', 'yes');
    $("p").slideToggle("slow", function() {$who.removeData('DO')});
  }
});

subzey 27.03.2010 16:06

$("button").click(function () {
	$("p:not(:animated)").slideToggle("slow");
});

micscr 27.03.2010 16:35

subzey опередил меня:) , я тут спешил еще с вариантом:
$("button").click(function () {
  if ($("p").queue().length == 0) $("p").slideToggle("slow");
});

vitja 27.03.2010 19:45

micscr, спасибо!!! :) только пришлось отказаться от slideToggle() в пользу toggle() из за скачка , который, думаю, все знают... Правда если указать высоту элементу в цсс, тогда только всё нормально, пробывал поставить высоту через height()- работает, но криво он её высчитывает как то.., а блок который слайдтуглится динамический по высоте .... Интересно, с слайдтуглом можно что то придумать?..спасибо


Часовой пояс GMT +3, время: 17:57.