Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [jQuery] Kliknięcie myszy po za chcianym obszarem
Fluke
post 6.08.2011, 12:57:09
Post #1





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 20.09.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Witam.

Mianowicie nie mam zielonego pojęcia jak zrobić efekt zamknięcia jakiegoś okna gdy użytkownik kliknie po za obszarem tego okna.
Jak na niektórych stronach jest otwieranie galerii i gdy klikniemy po za obszar obrazka, galeria zamyka się.

Dziękuję i pozdrawiam.
Go to the top of the page
+Quote Post
kamil4u
post 6.08.2011, 13:04:27
Post #2





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Na tych stronach jest prawdopodobnie warstwa(ta czarna) i to ona jest "klikalna".

Co do problemu to nadajesz zdarzenie na całą stronę i gdy klikany jest obszar, który ma nie zamykać strony, wtedy zatrzymujesz akcję: stopPropagation

Ten post edytował kamil4u 6.08.2011, 13:05:05


--------------------
Go to the top of the page
+Quote Post
Fluke
post 6.08.2011, 14:28:58
Post #3





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 20.09.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Ale jakiś kod?

Myślałem o tym ale nie wiem jak to zrobić, sprawdzić warunkiem czy zostało kliknięte pole które się otworzyło i jeżeli tak to nic nie rób a jeśli nie to zamknij?
Nie wiem jak to ubrać w kod...

Albo jaka jest funkcja w jQuery która pobiera nazwę elementu klikniętego.
Znalazłem jedynie coś takiego: target ale nie wiem jak to połączyć z moim problemem....
Go to the top of the page
+Quote Post
drozdii07
post 6.08.2011, 14:35:36
Post #4





Grupa: Zarejestrowani
Postów: 254
Pomógł: 39
Dołączył: 6.12.2010
Skąd: localhost

Ostrzeżenie: (0%)
-----


  1. $(body).click(function()){
  2. // Tutaj funkcja do znikania tego diva ;)
  3. }


Możesz sobie jakoś dorobić sprawdzenie czy jest pokazany ten DIV czy nie, ale ja niestety nie wiem jak wink.gif

Ten post edytował drozdii07 6.08.2011, 14:36:04


--------------------
Wspieram akcję "jQuery i AJAX to nie język programowania"
Go to the top of the page
+Quote Post
krowal
post 6.08.2011, 19:26:07
Post #5





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

Ostrzeżenie: (0%)
-----


Zdecydowanie lepiej jest opierać się na współrzędnych kliknięcia myszką niż na target. Wyobraź sobie że w swoim divie (który chcesz zamknąć gdy target podczas kliknięcia nie wskazuje na niego) masz jakieś elementy html, np. <span>cośtam</span> jeśli klikniesz w taki element to target będzie wskazywał na tego spana i mimo że jest on w środku twojego diva to zostanie on zamknięty. Lepiej jest zatem sprawdzić czy współrzędne myszki podczas kliknięcia znajdują się wewnątrz tego diva, jeśli nie to dopiero wtedy div zostaje zamknięty.


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
Fluke
post 7.08.2011, 11:40:50
Post #6





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 20.09.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Czyli nie ma żadnego sprawdzonego sposobu na tą rzecz?

Postaram się coś wymyślić i napiszę tutaj cały kod.
Go to the top of the page
+Quote Post
kamil4u
post 7.08.2011, 15:43:12
Post #7





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Jest sposób - sprawdzony wink.gif - ten co napisałem. Z tymi współrzędnymi myszki( by ~krowal ) to bym się nie zgodził...
Masz gotowca: http://jsfiddle.net/t28qj/
Kod
document.onclick = function(){
     alert('kliknieto');
};

document.getElementById('box').onclick = function(e){
     e.stopPropagation();
}


Nie działa pod IE, ale jak poczytasz o zdarzeniach to nie powinieneś mieć problemu... z resztą jQuery naprawiłoby by Ci błąd samo smile.gif
Czytaj: http://webhelp.pl/artykuly/obsluga-zdarzen-w-przegladarkach/ - ~krowal Ty też, bo masz rację, ale to działa w trochę innym wypadku wink.gif

Ten post edytował kamil4u 7.08.2011, 15:45:20


--------------------
Go to the top of the page
+Quote Post
krowal
post 7.08.2011, 16:05:57
Post #8





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

Ostrzeżenie: (0%)
-----


Cytat(kamil4u @ 7.08.2011, 16:43:12 ) *
Z tymi współrzędnymi myszki( by ~krowal ) to bym się nie zgodził...

Zwróć uwagę, że mi chodziło o to, że target się nie sprawdzi, rozwiązanie które podałeś jest ok wink.gif

Ten post edytował krowal 7.08.2011, 16:06:19


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
kamil4u
post 7.08.2011, 16:13:27
Post #9





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


A rzeczywiście... - nie widziałem wcześniej posta z tym target i myślałem, że to Tobie się coś pomieszało(a nie mi wink.gif ) i odnosisz się do mojego wcześniejszego postu. Sorry


--------------------
Go to the top of the page
+Quote Post
1010
post 7.08.2011, 22:35:21
Post #10





Grupa: Zarejestrowani
Postów: 749
Pomógł: 37
Dołączył: 3.10.2006

Ostrzeżenie: (0%)
-----


Kod
    $("#twojdiv").click(function(){
        return false;
    });
    $(body).click(function()){
       // Tutaj funkcja do znikania tego diva;)
    }

gdzie "twojdiv" to id diva, którego kliknięcie nie powoduje żadnej akcji


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2024 - 04:01