Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Игнорирование дочерних объектов на событие (https://javascript.ru/forum/events/31468-ignorirovanie-dochernikh-obektov-na-sobytie.html)

kingrus 09.09.2012 14:46

Опять трудность, на созданном диве работает. Но у меня див создается при событии, попробуй в свой код, в начало добавь вот это
window.onload = function(){
		var div = document.createElement('div');
		div.setAttribute('id','bla');
		document.body.appendChild(div);
		}

и уже не работает...
до hover({.... я уже пробовал существование if(document.getElementById('bla')) - не помогло

kingrus 09.09.2012 14:48

как раз у меня поэтому ошибка и вылазила... так как он дива того не видит

cyber 09.09.2012 14:52

в jquery уже есть метод hover он встроенный используйте его

cyber 09.09.2012 14:59

все работает
<!DOCTYPE HTML>
<html>
  <head>
  <style>
    .d{
      width:200px;
      height:200px;
      border:3px solid black;
    
    
    }
    
    
    
    </style>
  </head>
  <body>
    <a href='#' id='create'>create</a>
    
    <script>
      function _(selector) {
      
      return document.querySelectorAll(selector)[0];
      }

      
      _('#create').onclick = createElement;
      
        function createElement(){
         var div = document.createElement('div');
          div.className='d';
          
          document.body.appendChild(div);
          hover({
            elem:div,
            over:function (){
            
            alert('over');
            },
            
            out:function () {
            
            
            alert('out');
            }
          
          })
        
         return false;
        };
      
      
           
function hover (opt) {
	
 opt.elem.onmouseover = ElemMouseAction;	 
 opt.elem.onmouseout = ElemMouseAction;
 	
 function ElemMouseAction (evt) {
  var related, Call;
  var e = evt || event;	 
 
	if(e.type == 'mouseover'){  
	  Call = opt.over; 
	  related = e.relatedTarget || e.fromElement;
	  
	} else {
	  Call = opt.out; 
	  related =  e.relatedTarget || e.toElement;
	  
		}
		
			
	while (related && related != this) {
		related = related.parentNode;
		} 
	  
	  if(related == this) return;
	 
	  Call();
	 
	 }	

	
	}
	

    </script>

  </body>
</html>

kingrus 09.09.2012 15:14

Спасибо огромное за такую помощь!
Все заработало просто я
hover({
	elem:document.getElementById('bla'),
	over:function () {// срабатывает при mouseover
	alert('over');	
		},
	out:function (){// срабатывает при mouseout
		
      alert('out');
		}	
	
	});

добавил в саму функцию, которая и создает див. Все отлично. Только теперь разберу, что к чему, до конца.
Еще раз спасибо!)

kingrus 09.09.2012 15:14

обошелся без jqvery

cyber 09.09.2012 15:32

если нужна поддержка ие меньше 8 , функцию
function _(selector) {
      
      return document.querySelectorAll(selector)[0];
      }

не используйте

kingrus 09.09.2012 15:42

я думаю, < 8 не будет, спасибо)

cyber 09.09.2012 15:47

ну тогда тут описано как работает этот метод http://learn.javascript.ru/searching...electorall-css


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