Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] Kliknięcie myszy po za chcianym obszarem
Forum PHP.pl > Forum > Po stronie przeglądarki
Fluke
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.
kamil4u
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
Fluke
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....
drozdii07
  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
krowal
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.
Fluke
Czyli nie ma żadnego sprawdzonego sposobu na tą rzecz?

Postaram się coś wymyślić i napiszę tutaj cały kod.
kamil4u
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
krowal
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
kamil4u
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
1010
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.