Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   fadeIn/fadeOut срабатывает дважды (https://javascript.ru/forum/jquery/70596-fadein-fadeout-srabatyvaet-dvazhdy.html)

webmanss 18.09.2017 16:07

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, как зациклить код? Т.е. если этих блоков много, как с помощью цикла оптимизировать код?

Rasy 18.09.2017 16:27

Цитата:

Сообщение от webmanss
но не помогло

Показан ведь метод stop(), который останавливает анимацию.
Цитата:

Сообщение от webmanss
как зациклить код

Когда мы делаем выборку функцией $, цикл уже отрабатывает. Передаем дивы с общим классом, либо по селектору атрибута.
$(function () {
  $('div[id^="block"]')
    .mouseover(function(e) {
       $(this).children().stop().fadeIn(300);
  }).mouseout(function(e) {
       $(this).children().stop().fadeOut(200);
  });
});

webmanss 18.09.2017 16:35

с методом stop() вообще не срабатывает: https://jsfiddle.net/fuxbkepe/

Rasy 18.09.2017 16:46

webmanss,
Ты подключил слишком старую версию библиотеки.

webmanss 18.09.2017 17:27

Да) спасибо большое!


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