ďťż
Podstrony
|
telcocafeJak sprawdzić w zdarzeniu onclick, czy kursor myszki znajduje się nad warstwą DIV o pewnym ID lub o pewnej klasie?Funkcja onclick dotyczy całego dokumentu: onclick=function() { ... } Chcę osiągnąć efekt podobny jak z menu na tym forum. Użytkownik Ferrari edytował ten post 21 marzec 2007, 17:01 Toporna metoda: globalna tablica asocjacyjna o kluczach będących nazwami DIVów, a wartościach będących typem boolean, określającym, czy myszka jest na nim, czy nie. I funkcja onmouseover dla każdego DIVa byłaby mniej-więcej taka: myszki[this.value] = true; Oraz dla onmouseout: myszki[this.value] = false; PS. Z tym menu, to chodzi Ci o coś takiego jak: http://kurshtml.boo....ijane_menu.html ? Kliknij na górze przycisk OPCJE, a potem gdziekolwiek poza wyświetlonym menu. O tego typu efekt mi chodzi. Hmmm, może dam taką dwuczłonową odpowiedź... 1. http://kurshtml.boo...._rozwijane.html I to możesz przerobić (ale nie wiem, czy się tak da :D), żeby po kliknięciu gdzieś poza odpowiedni DIV (czyli np. body onclick="schowaj_menu();"). 2. Jak sprawdzić w zdarzeniu onclick, czy kursor myszki znajduje się nad warstwą DIV o pewnym ID lub o pewnej klasie? if (this.className=='klasa') { } Skoro w metodzie onlick, to znaczy, że kursor musi być nad elementem, który wywołał dla siebie onclick. Zatem przekazuje zmienną this. Czyli masz odpowiedź na swoje pytanie :P Chyba, że jeszcze Ci o to nie chodziło :rolleyes: Ale problem w tym, że chcę to zbadać niezależnie od tego, czy kursor znajduje się nad tym elementem. Jest to skomplikowane, ale możliwe. Jeśli nic się wykombinuje, zastosuję metody onmouseover i onmouseout. http://w3schools.com...rrenttarget.asp http://w3schools.com...vent_target.asp //ewentualnie: http://w3schools.com...vent_srcelement Może pomoże (mam nadzieję) :) Użytkownik pbnan edytował ten post 21 marzec 2007, 19:32 Teraz działa, ale mam kolejny problem. Co zrobić, aby TARGET dotyczyło również obiektów znajdujących się w tej warstwie? Jeszcze jedno pytanie - jeśli wpiszę większą ilość klas w atrybucie CLASS, JS będzie wykrywał poprawnie warstwy o klasie HINT? Przykład:<div class="hint txtm menu">...</div> onclick=function(e) { var targ; if(!e) var e=window.event; if(e.target) targ=e.target; else if(e.srcElement) targ=e.srcElement; if(targ.nodeType==3) //Safari targ=targ.parentNode; alert(targ.id); if(targ.className.indexOf('hint')!=-1) { alert('t'); for(i=0;i<toHide.length;i++) { Hint(toHide[i],cx,cy,1) } } } Może niepotrzebnie mordowałem się z JS jeszcze dłużej - poniższe rozwiązanie również jest dobre. onmousedown=XY; onclick=function() { var l=toHide.length; if(l>0) { for(i=0;i<l;i++) { Hint(toHide[i],cx,cy,1) } } } //HINTY function Hint(i,l,t,u) { if(d(i).style.display!='block') { d(i).style.left=l+'px'; d(i).style.top=t+'px'; d(i).style.display='block'; if(u==1) setTimeout('toHide.push("'+i+'")',300); } else { d(i).style.display='none'; if(u==1) toHide.splice(toHide.indexOf(i),1); } }Znalezienie rozwiązania również trochę potrwało. Użytkownik Ferrari edytował ten post 21 marzec 2007, 22:01 |
|||
Sitedesign by AltusUmbrae. |