![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Kiedyś miałem już ten problem, ale obszedłem go trochę inaczej i dałem sobie spokój. Teraz temat powrócił, ale pytam bardziej z ciekawości, bo sytuacja jest dla mnie trochę nielogiczna.
Mam prościutki kod HTML: A do niego podpięty równie prosty kod JS:
W działaniu wygląda to tak. I teraz tak: - po kliknięciu w pierwsze pole radio pokazuje się alert: 1 - OK. - po kliknięciu w drugie pole radio pokazuje się alert: 2 - też OK. - po kliknięciu na napis test label (click here) również pokazuje się alert: 1, ale dwukrotnie. Moje pytanie brzmi - dlaczego tak się dzieje? Dla bardziej dociekliwych dodam, że change( callback ) nie przyda mi się ze względu na to, że pod IE callback jest wykonywany dopiero w momencie zdjęcia focusa z pola radio. Ten post edytował sowiq 28.08.2009, 01:26:35 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 403 Pomógł: 68 Dołączył: 20.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
wydaje mi się że to poprawne działanie ponieważ, jak można zauważyć użycie w formularzu label nawet, bez użycia JS powoduje że po kliknięciu w etykietę zaznacza nam się również checkbox, który jest dzieckiem tej etykiety. Inaczej mówiąc wykonują się 2 zdarzenia click. To tylko moja teoria na jej poparcie mam taki oto dowód
![]() ![]() edit: Co ciekawe taka konstrukcja działa już poprawnie:
Przepraszam za chaotyczny styl, ale aż musiałem oderwać się od projektu żeby się tym pobawić ![]() Ten post edytował f1xer 28.08.2009, 01:49:45 -------------------- Pomogłem? wyraź to i kliknij "Pomógł"
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
wydaje mi się że to poprawne działanie ponieważ, jak można zauważyć użycie w formularzu label nawet, bez użycia JS powoduje że po kliknięciu w etykietę zaznacza nam się również checkbox, który jest dzieckiem tej etykiety. Wszystko ładnie, pięknie, ale pierwsze pole radio nie ma przypisanego zdarzenia onclick ![]() Jeśli zrobię sobie tak: oraz: to idąc Twoim tokiem rozumowania alert również powinien pokazać się dwa razy, a tak się nie dzieje. Musiałbym przypisać zdarzenie również do elementu <span />. Chyba że pole <label /> działa tak, że po kliknięciu w nie przeglądarka sama wywołuje akcję kliknięcia na elemencie w środku, bo programistom było łatwiej (bo np. taka akcja była już oprogramowana). |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
A dlaczego tak się dzieje to dokladnie nie wiem. Prawdopodobnie chodzi o bąbelkowanie eventów. Ten post edytował wookieb 28.08.2009, 08:31:37 -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Prawdopodobnie chodzi o bąbelkowanie eventów. Cały szkopuł polega na tym, że takie zachowanie można zaobserwować tylko dla <label />. Dodałem dla przykładu <div /> z dwoma <span /> wewnątrz. Pierwszy <span /> nie ma przypisanej akcji, więc po kliknięciu wyświetla się tylko jeden alert. Identycznie powinno być w przypadku pierwszego pola radio.http://sowiq.net/jquery/ |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 23:23 |