🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.javascript
Article #49437

Re: prototype observe - problem z zagnieżdżonymi elementami

#49437
From: keemor
Date: Fri, 09 Oct 2009 11:13
68 lines
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-mail
References: <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