Вопрос по JavaScript

ixRock
На сайте с 14.11.2006
Offline
46
548

Есть <div>. И есть в нём картинки.

На диве повешены обработчики onmousemove и onmouseover.

Когда мы подводим мышу на див то срабатывает например такой блок

mydiv_obj.onmouseover = function(e) {

e = e || window.event;

/* тут какой то код */

alert( 'Gatcho!' )

}

так вот, у объекта event есть такое свойство cancelBubble, которое если поставить в true, то распространения события по иерархии вверх прекратится.

Нужно всё в точности наооборот :) Чтобы когда я двигаю мышой внутри этого дива

небыло лишних вызовов этих обработчиков на картинках внутри дива (т.к сейчас они есть).

Еще раз: сейчас когда мыша внутри дива натыкается на картинку вызывается onmouseover для дива и алерт... Надо чтобы этого небыло и когда курсор попадает на картинку этот блок для события не обрабатывался а был например как просто текст.

Работаю [S]за еду и секас[/S] с XHTML, CSS, XSLT, JS, PHP. Если что, вот тут (http://www.mintdesign.ru/) некоторые мои работы. Контакты: ася 344-ноль86-276, мыло ixrock@gmail.com
Ayavryk
На сайте с 11.10.2003
Offline
209
#1

e.cancelBubble = true; // ie

if (e.stopPropagation) e.stopPropagation(); //w3

Тынгыр, мынгыр, комсомол (http://erum.ru). Ехари, ехари, (жалобно) аяврик. /народная тунгусская песня/
ixRock
На сайте с 14.11.2006
Offline
46
#2

читайте внимательнее что мне нужно.

я как раз писал о том, что то, что делает "cancelBubble" мне не надо, а нужно что-то вроде этого, только наоборот, внутрь дерева.

S
На сайте с 09.10.2007
Offline
186
#3
ixRock:
блин, читайте вначале вдумчиво что я написал... :(
мне не это нужно.

вы знаете, после такого ответа тому, кто хотел вам помочь, как то и помогать перехотелось....

Удобная панель для доменных имен (http://panel.started.ru/) с массовыми операциями. Индивидуальные цены по запросу.
Kolyaj
На сайте с 28.03.2006
Offline
69
#4

ixRock, так не вешайте обработчики на картинки, если и не повешены, то непонятна ситуация.

Ayavryk
На сайте с 11.10.2003
Offline
209
#5

Ну так навесьте на внутренние элементыдополнительный обработчик; В jquery это делается легко и непринужденно.

ixRock
На сайте с 14.11.2006
Offline
46
#6

Ayavryk, какой обработчик повесить?? чтобы он не мешал вообще работе внешнего...

"return true" не помогло.

Kolyaj, на внутренних и не висит никаких обработчиков, в том то и дело.

пример:

[ это див и в нём текст.. [а это новый объект, пусть картинка] текст.. ]

так вот когда есть обработчик на диве, onmouseover и что происходит... первый раз когда я подвёл мышу на див он сработал.. дальше веду указатель к картинки внутри него, и он опять срабатывает. Вот от этого не могу никак избавится... :(

вот пример:

<strong onmouseout="alert(123)" style="font:20px Arial; background:silver;">

123134

<em style="background:red;">567567567567</em>

</strong>

Вначале подводим указатель мыши на текст на сером фоне, потом переходим с него на красный. Надо чтобы этот onmouseout не срабатывал внутри объекта как в данном примере...

ixRock добавил 24.03.2008 в 16:36

частично попытался решить проблему с помощью

evt.relatedTarget || evt.toElement

но что-то ппц глючит в разных случаях по разному :((

/me tired... x_x

Николай В.
На сайте с 07.09.2006
Offline
62
#7

Есть примитивное решение в лоб:


<script>
var f_trig = true;
function f() {
if(f_trig) alert('!');
f_trig = true;
}
function f_stop() {
f_trig = false;
}
function f_run() {
f_trig = true;
}
</script>
<strong onmousemove="f();" style="font:2em serif; background:silver;">
silver
<em style="background:green;" onmousemove="f_stop();" onmouseover="f_run();">green</em>
silver
</strong>

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий