Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.12.2009, 13:20
Интересующийся
Отправить личное сообщение для morfie Посмотреть профиль Найти все сообщения от morfie
 
Регистрация: 13.08.2009
Сообщений: 15

проблема с 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>

Последний раз редактировалось morfie, 27.12.2009 в 13:23.
Ответить с цитированием
  #2 (permalink)  
Старый 27.12.2009, 14:29
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,576

Если нативным JS не подскажут то
в jQuery есть как раз для этого следующие события:
$('...').mouseenter(fn);
$('...').mouseleave(fn);
Ответить с цитированием
  #3 (permalink)  
Старый 27.12.2009, 14:58
Аспирант
Отправить личное сообщение для haha Посмотреть профиль Найти все сообщения от haha
 
Регистрация: 02.08.2009
Сообщений: 40

Можно сделать небольшую задержку перед началом анимации. Нужна она для запуска анимации после проверки какого-нибудь флажка, который и будет переключаться на 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);
}

Но все равно, легче через фреймворк, потому что эти функции начнут соперничать друг с другом. А как это предотвратить - целая статейка.
Проверка тегов будет не нужна.

Последний раз редактировалось haha, 27.12.2009 в 15:03. Причина: а вот надо
Ответить с цитированием
  #4 (permalink)  
Старый 27.12.2009, 18:19
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Все, что Вам нужно — это проверять, является ли relatedTarget вложенным в отслеживаемый объект. И если да, то функции ничего не делать.
Ответить с цитированием
  #5 (permalink)  
Старый 27.12.2009, 19:41
Интересующийся
Отправить личное сообщение для morfie Посмотреть профиль Найти все сообщения от morfie
 
Регистрация: 13.08.2009
Сообщений: 15

мне не удалось таким методом сделать.я плохо знаю js.

распишите подробнее или дайти ссылку где можно такое изучить
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с CSS COKOJIOB (X)HTML/CSS 5 04.08.2009 14:19
Проблема, в менюшке Большой джо Элементы интерфейса 0 12.07.2009 17:12
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47
проблема с обработкой DIV nerik AJAX и COMET 2 22.08.2008 17:40
проблема с передачей русского текста в Prototype subaru Prototype & script.aculo.us 2 26.07.2007 16:56