Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.03.2012, 23:28
Новичок на форуме
Отправить личное сообщение для Kostyk92 Посмотреть профиль Найти все сообщения от Kostyk92
 
Регистрация: 06.02.2012
Сообщений: 9

jQuery. Запрет выполнения события если другое уже выполняется.
В общем задание вот такое: "Используя css-спрайты и jquery (jquery.com) сделать кнопку, изменяющую фон при наведении мышкой на более светлый и при клике на более темный. После клика через 1 секунду кнопка должна начать исчезать и через еще 2 исчезнуть полностью."
На данный момент написал следующее:
<!DOCTYPE>
<html>
<head>
<title>CSS-спрайт и JQuery</title>
<meta http-equiv="Content-Type" content="text/html;">
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="jquery-1.7.1.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('.megaweb').each(function(){
      
      $(this).mouseover(function(){
          $(this).css("background-position","0");
      });
      $(this).mouseout(function(){
          $(this).css("background-position","-157px");
      });
      $(this).click(function(){
          $(this).css("background-position","-314px");
	  $(this).delay(1000).animate({opacity:'0.0'},2000);
      });
});
});
</script>
</head>
<body>
Пример последовательно обработки событий<br> 
<div class="megaweb" href="">dsvsdvds</a>
</body>
</html>

Вся проблема в том что если в процессе выполнения анимации вывести курсор за пределы дива картинка передвинет положение согласно событию mouseout. Так вот как заблокировать mouseout если click уже произошло, ну или производится.
Ответить с цитированием
  #2 (permalink)  
Старый 09.03.2012, 23:35
Профессор
Отправить личное сообщение для zebra Посмотреть профиль Найти все сообщения от zebra
 
Регистрация: 14.09.2011
Сообщений: 523

Сделать unbind событий. Или сделать переменную, которая не будет разрешать менять css.
Ответить с цитированием
  #3 (permalink)  
Старый 09.03.2012, 23:37
Новичок на форуме
Отправить личное сообщение для Kostyk92 Посмотреть профиль Найти все сообщения от Kostyk92
 
Регистрация: 06.02.2012
Сообщений: 9

спасибо большое. а то шарил, шарил документацию - ни че не нашел
Ответить с цитированием
  #4 (permalink)  
Старый 09.03.2012, 23:37
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

// в самое начало вставить:
var checkPoint = true; 

// в клике добавить:
 $(this).click(function(){
                 checkPoint = false; 
	      $(this).css("background-position","-314px");
	      $(this).delay(1000).animate({opacity:'0.0'},2000);
                 checkPoint = true;
 });

// в маусоуте добавить:
 $(this).mouseout(function(){
         if(checkPoint){
          $(this).css("background-position","-157px");
         }
      });
__________________
С моих слов записано верно.
Ответить с цитированием
  #5 (permalink)  
Старый 09.03.2012, 23:46
Новичок на форуме
Отправить личное сообщение для Kostyk92 Посмотреть профиль Найти все сообщения от Kostyk92
 
Регистрация: 06.02.2012
Сообщений: 9

Учту на будущее и такой вариант, но в данном случае помойму проще написать просто $(this).unbind() на click
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Если один уже открыт и при нажатии на ссылку два первый блок скрывался и открывался ybiza Элементы интерфейса 3 16.12.2010 22:24
jQuery object в xpath. Глобальные события solarix jQuery 1 29.10.2010 16:40
Запрет события при выполнения другова Suharik Events/DOM/Window 3 07.05.2010 16:29
Обработчик события: как делает jquery? Shasoft jQuery 35 22.04.2009 09:41