Article View: pl.comp.lang.javascript
Article #49437Re: prototype observe - problem z zagnieżdżonymi elementami
From: keemor
Date: Fri, 09 Oct 2009 11:13
Date: Fri, 09 Oct 2009 11:13
68 lines
3098 bytes
3098 bytes
On 9 Paź, 11:26, alianora <alian...@go2.pl> wrote:
> Witam,
>
> Mam taki element na stronie:
> <div id="F227" class="drop_img">
> <div id="ed_F227" class="drop_menu"></div>
> <div id="edb_F227" class="drop_edb"/></div>
> </div>
>
> i potem taki kod JS (fragment):
>
> observeImgDrop : function(elem) {
> $('F227').observe('mouseover',this.dropImgMouseOver.bind(this));
> $('F227').observe('mouseout', this.dropImgMouseOut.bind(this));
> return true;
>
> },
>
> dropImgMouseOver : function(e) {
> Event.stop(e);
> Event.element(e).className = 'drop_img_hover';
> return true;
>
> },
>
> dropImgMouseOut : function(e) {
> Event.stop(e);
> Event.element(e).className = 'drop_img';
> return true;
>
> },
>
> Pierwszy problem w tym, że Event.element(e) zwraca wewnętrznego DIVa.
> Niby obszedłem to czymś takim:
>
> var id = Event.element(e).id.split('_');
> id = id[id.length-1];
> $(id).className = 'drop_img_hover';
>
> (wiem, mało eleganckie) ale pojawia się drugi problem: przesuwając
> kursor myszy między wewnętrznymi DIVami powoduje generowanie zdarzeń
> mouseout i mouseover co powoduje denerwujące migotanie.
>
> Jak to zrobić dobrze? Gdzie tkwi mój błąd?
> Proszę o w miarę łopatologiczne wyjaśnienie bo nie jestem ekspertem od JS...
Nie uzywaj w tym miejscu bind, tylko:
observeImgDrop : function(elem) {
$('F227').observe('mouseover',this.dropImgMouseOver);
$('F227').observe('mouseout', this.dropImgMouseOut);
return true;
},
wtedy wewntarz tej metody, this zawsze odnosi sie do elementu, na
ktorym jest zarejestrowane zdarzenie
dropImgMouseOver : function(e) {
e.stop();
//to powinno zalatwic migotanie
if (!this.hasClassName('drop_img_hover')) {
this.addClassName('drop_img_hover');
}
},
pozdrawiam
keemor.com
Technical Details
Message-ID:
<dbdf1951-b405-42c2-8a34-5407ae7f6e7c@o41g2000yqb.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!goblin2!goblin1!goblin.stu.neva.ru!postnews.google.com!o41g2000yqb.googlegroups.com!not-for-mailReferences:
<hamvk2$qsn$1@inews.gazeta.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!goblin2!goblin1!goblin.stu.neva.ru!postnews.google.com!o41g2000yqb.googlegroups.com!not-for-mail From: keemor <keemor@gmail.com> Newsgroups: pl.comp.lang.javascript Subject: Re: prototype observe - problem z zagnieżdżonymi elementami Date: Fri, 9 Oct 2009 04:13:43 -0700 (PDT) Organization: http://groups.google.com Lines: 70 Message-ID: <dbdf1951-b405-42c2-8a34-5407ae7f6e7c@o41g2000yqb.googlegroups.com> References: <hamvk2$qsn$1@inews.gazeta.pl> NNTP-Posting-Host: 217.98.91.230 Mime-Version: 1.0 X-Trace: posting.google.com 1255086823 24760 127.0.0.1 (9 Oct 2009 11:13:43 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Fri, 9 Oct 2009 11:13:43 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: o41g2000yqb.googlegroups.com; posting-host=217.98.91.230; posting-account=h5WmiQoAAACR2Lf0ojrkOgSRNbKcXh-3 User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008110808 Ubuntu/7.10 (gutsy) Firefox/3.0.3,gzip(gfe),gzip(gfe) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit