проблема с 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, время: 05:06. |