проблема с e.target.tagName и е.relatedTarget.tagName
есть блоки при mouseover они увеличиваются и mouseout уменьшаются.
но при наведение на элементы 'span, a' внутри них, выполняется события mouseover, mouseout. мое решение: el = event.target.tagName; elREL = event.relatedTarget.tagName if (el! = 'A' & & elREL! = 'A' & & el! = 'TD' & & el! = 'TABLE' & & elREL! = 'TD') (код ....} но оно не практическое подскажите правильное пожалуйста function resize_expanse(ob,w,h) { clearTimeout('time2') function sama_znik(){ if(w<=320 && h<=220){ ob.style.width=w; ob.style.height=h; w=w+4 h=h+4 time=setTimeout(sama_znik,30) } } sama_znik() } function resize_reduction(ob,w,h) { clearTimeout('time') function sama_znik(){ if(w>300 && h>200){ ob.style.width=w; ob.style.height=h; w=w-4 h=h-4 time2=setTimeout(sama_znik,30) } } sama_znik() } и хтмл <span id="COOL_block" > <div id="box3" onmouseover=' resize_expanse(this,300,200)' onmouseout='resize_reduction(this,320,220)'> <a href="#"> ссылка</a> <span>еще что-то</span> </div> </span> |
Если нативным JS не подскажут то
в jQuery есть как раз для этого следующие события: $('...').mouseenter(fn); $('...').mouseleave(fn); |
Можно сделать небольшую задержку перед началом анимации. Нужна она для запуска анимации после проверки какого-нибудь флажка, который и будет переключаться на mouse(over|out). Бонус: если будет быстрое случайное проведение по объекту, то анимации не будет.
var waiter,flag; //глобальные для этих функций function expande(){ if(flag)resize_expanse() } function reduce(){ if(!flag)resize_reduction() } function anim_over(){//забиндить на mouseover flag = true; clearTimeout(waiter); waiter = setTimeout(expande,50); } function anim_out(){//на mouseout flag = false; clearTimeout(waiter); setTimeout(reduce,50); } Но все равно, легче через фреймворк, потому что эти функции начнут соперничать друг с другом. А как это предотвратить - целая статейка. Проверка тегов будет не нужна. |
Все, что Вам нужно — это проверять, является ли relatedTarget вложенным в отслеживаемый объект. И если да, то функции ничего не делать.
|
мне не удалось таким методом сделать.я плохо знаю js.
распишите подробнее или дайти ссылку где можно такое изучить |
Часовой пояс GMT +3, время: 19:37. |