Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Проигрывание функции ОДИН РАЗ (https://javascript.ru/forum/jquery/15123-proigryvanie-funkcii-odin-raz.html)

Kubert 14.02.2011 13:55

Проигрывание функции ОДИН РАЗ
 
есть это:

<script src="http://code.jquery.com/jquery-1.5.js"></script>
div.block01 {background:#333;width:200px;height:200px;}
div.block01 {background:#999;width:200px;height:200px;}

<div class="block01"></div>
<div class="block02"></div>

$(".block01").mouseover(function(){
	$(".block02").fadeIn(300).fadeOut(300);
	});

Идея такая, что при наведении на блок появляется еще один блок с другим беграундом и исчезает, что дает мне "свечение", "блеск" основного блока...
НО! Функция "зациклена", т.е. проигрывается бесконечное кол-во раз. "Бесконечный блеск" не нужен, нужо один раз.
ВОПРОС: Как "зациклить" функцию один раз?

kadabrik 15.02.2011 05:02

Из за этой строчки:
fadeIn(300).fadeOut(300);

jQuery будет пытаться одновременно проявить и скрыть объект, в результате чего и происходит зацикливание. В данном случае нужно воспользоваться callback функциями
Заменить:
$(".block01").mouseover(function(){
    $(".block02").fadeIn(300).fadeOut(300);
 });

на что-то типа:
$(".block01").hover(function(){
    $(".block02").fadeIn(300,function(){ $(this).fadeOut(300)});
 });


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