Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   mouseout и дочерние блоки (https://javascript.ru/forum/dom-window/58591-mouseout-i-dochernie-bloki.html)

Shuryga 30.09.2015 13:23

mouseout и дочерние блоки
 
Ребят такая тема.
есть див в нем много дивов и блоков и ссылок с разными вложенностями. и есть второй блок который к нему прижат.

предподожем выглядит так:
<div class='parent-block-one'>
    <div class='children-block-one'></div>
    <div class='children-block-two'>
         <a href = ''>12</a>
         <a href = ''>2</a>
         <a href = ''>14</a>
         <div class = 'block-z'>
              <span></span>
         </div>
    </div>
</div>
<div class='parent-block-two'></div>

задача следущая

убираем мышку с блока 'parent-block-one' делаем ему display:none.
но если мы мышку убрали но попали на блок 'parent-block-two' тогда нечего не делаем

реализовал так

$('.parent-block-one').mouseout(function(e){
	if($( e.relatedTarget ).attr('class')!='parent-block-two')
           {
           $(this).css('display','none');
	   }
});


но в таком случае если мы водим по блоку 'parent-block-one' и попадаем на любой дочерний блок то он закрывает этот див. но как мне сделать что он не закрывал. не перечеслять же все классы дочерних блоков.

ksa 30.09.2015 13:28

Shuryga, какой смысл плодить темы на одном форуме? :D

Shuryga 30.09.2015 13:48

Я сначала не там создал:-? Сорян ребят

рони 30.09.2015 18:42

Цитата:

Сообщение от Shuryga
mouseout

mouseleave

Decode 01.10.2015 01:11

Хз, как на JQuery, но по простому можно так:
var parentBlockOne = document.querySelector('.parent-block-one'),
    parentBlockTwo = parentBlockOne.nextElementSibling;

parentBlockOne.onmouseout = function(e) {
  if ( e.relatedTarget == parentBlockTwo || this.contains(e.relatedTarget) ) {
    return false;
  }

  this.style.display = 'none';
};

Shuryga 05.11.2015 13:26

Ребят спасибо большое все работает.


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