Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.09.2017, 16:07
Аспирант
Отправить личное сообщение для webmanss Посмотреть профиль Найти все сообщения от webmanss
 
Регистрация: 17.02.2013
Сообщений: 34

fadeIn/fadeOut срабатывает дважды
Всем привет, есть небольшой код:
<div id="block1">
  <div id="in_block_1">test</div>
</div>
 
<div id="block2">
  <div id="in_block_2">ok</div>
</div>

<style>#block1 {
    pozition:relative;
    z-index-1;
    width: 200px;
    height: 100px;
    background-color:blue; 
    color:#000;
    cursor:pointer;
  }
  #block2 {
    pozition:relative;
    z-index-1;
    width: 200px;
    height: 100px;
    background-color:green; 
    color:#000;
    cursor:pointer;
  }
 #in_block_1, #in_block_2 {
    pozition:absolute;
    z-index-2;
    display:none;
    width: 200px;
    height: 100px;
    background-color: #000;
    color:#fff
  }
  
</style>




$(function () {
  $("#block1").mouseover(function(){
       $('#in_block_1').fadeIn(300);
   });
 $("#block1").mouseout(function(){
       $('#in_block_1').fadeOut(200);
        });
});

$(function () {
  $("#block2").mouseover(function(){
       $('#in_block_2').fadeIn(300);
   });
 $("#block2").mouseout(function(){
       $('#in_block_2').fadeOut(200);
        });
});


Задача была поверх первого блока вывески (плавно) второй блок при наведении на первый. Сейчас работает, но срабатывает дважды (или большее число раз) нашел пояснение к эффектам jquery но не помогло.
Кто знает в чем причина?
И вопрос №2, как зациклить код? Т.е. если этих блоков много, как с помощью цикла оптимизировать код?
Ответить с цитированием
  #2 (permalink)  
Старый 18.09.2017, 16:27
Профессор
Отправить личное сообщение для Rasy Посмотреть профиль Найти все сообщения от Rasy
 
Регистрация: 17.06.2016
Сообщений: 509

Сообщение от webmanss
но не помогло
Показан ведь метод stop(), который останавливает анимацию.
Сообщение от webmanss
как зациклить код
Когда мы делаем выборку функцией $, цикл уже отрабатывает. Передаем дивы с общим классом, либо по селектору атрибута.
$(function () {
  $('div[id^="block"]')
    .mouseover(function(e) {
       $(this).children().stop().fadeIn(300);
  }).mouseout(function(e) {
       $(this).children().stop().fadeOut(200);
  });
});
Ответить с цитированием
  #3 (permalink)  
Старый 18.09.2017, 16:35
Аспирант
Отправить личное сообщение для webmanss Посмотреть профиль Найти все сообщения от webmanss
 
Регистрация: 17.02.2013
Сообщений: 34

с методом stop() вообще не срабатывает: https://jsfiddle.net/fuxbkepe/
Ответить с цитированием
  #4 (permalink)  
Старый 18.09.2017, 16:46
Профессор
Отправить личное сообщение для Rasy Посмотреть профиль Найти все сообщения от Rasy
 
Регистрация: 17.06.2016
Сообщений: 509

webmanss,
Ты подключил слишком старую версию библиотеки.
Ответить с цитированием
  #5 (permalink)  
Старый 18.09.2017, 17:27
Аспирант
Отправить личное сообщение для webmanss Посмотреть профиль Найти все сообщения от webmanss
 
Регистрация: 17.02.2013
Сообщений: 34

Да) спасибо большое!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таймер срабатывает раньше времени или вообще не срабатывает Terebonko Элементы интерфейса 6 03.08.2017 12:43
Событие change на селекте срабатывает дважды TomTykver jQuery 6 28.01.2016 22:03
$('.forAdmin').toggle(); срабатывает дважды для 1 элемента 0xSS jQuery 7 16.02.2015 10:35
Нажатие по дате в календаре срабатывает только со второго клика afr0 Events/DOM/Window 4 31.10.2012 13:39
onload на iframe срабатывает дважды hogart Events/DOM/Window 3 09.12.2009 18:09