div i div och mouseover

JavaScript

4 svar · 253 visningar · startad av Jaar

Medlem sedan juli 2001434 inlägg
Trådstart#1

Jag har en div som i sin tur innehåller andra div:ar

<div onMouseOut="alert('div1');">
   <div onMouseOver="this.style.backgroundColor='#FF0000';" onMouseOut="this.style.backgroundColor='#00FF00';">Test1</div>
<div onMouseOver="this.style.backgroundColor='#FF0000';" onMouseOut="this.style.backgroundColor='#00FF00';">Test2</div>
</div>

När man för musen över t.ex test1, så triggas både mouseover på "test1" och mouseout på "div1" (yttre diven)
I min mening så går man inte ut ur den diven förens man lämnar ytterkanterna, men så var tydligen inte fallet...

Går det att komma runt detta på något vis?

Medlem sedan juli 20013 378 inlägg
#2

Scriptfrågor får nog bättre svar i rätt forum ;)

Flyttas från HTML, XHTML & CSS

/Jarvklo - Moderator HTML, XHTML & CSS

Medlem sedan juli 2001434 inlägg
#3

Hittade svaret...

Det jag sökte var OnMouseLeave

Medlem sedan feb. 2003774 inlägg
#4

IE/Win only lösning dock.

Medlem sedan dec. 20025 483 inlägg
#5

För att svara på din ursprungliga fråga: Anledningen till att alert()-funktionen körs är att onmouseouthändelsen bubblar uppåt i nodhierarkin vilket innebär att även dessa noders ditohändelse aktiveras. För att hindra detta måste man alltså stoppa det här fenomenet.

En lösning kan se ut på följande vis:

function f(obj, evt) {
    evt = evt || window.event;

    if (typeof evt.stopPropagation != "undefined") evt.stopPropagation();
    else if (typeof evt.cancelBubble != "undefined") evt.cancelBubble = true;

    obj.style.backgroundColor = "#0f0";
}

...

<div onMouseOut="alert('div1');">
    <div onMouseOver="this.style.backgroundColor='#FF0000';" onMouseOut="f(this,event)">Test1</div>
    <div onMouseOver="this.style.backgroundColor='#FF0000';" onMouseOut="f(this,event)">Test2</div>
</div>

:)

266 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)