• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wywołanie funkcji show() tylko raz

+1 głos
854 wizyt
pytanie zadane 2 lipca 2018 w JavaScript przez fyrr Użytkownik (910 p.)

Witam, mam taki banalny problem - chciałbym, aby funkcja show() została wywołana tylko raz po kliknięciu na element $(".galeryOption"). Chodzi o to żeby kolejne kliknięcie na ten element nie przyniosło żadnego rezultatu. 

Jak to zaimplementować do mojego kodu: 

$("#zoomIn").hide();

    $(".galeryOption").click(function () {

        $("#zoomIn").show(500);



    });

    $("#zoomIn").click(function () {
        $("#zoomIn").hide();
        $("#galery").animate({
            height: "717px",
            width: "1200px"
        });

 

2 odpowiedzi

+1 głos
odpowiedź 2 lipca 2018 przez surfeliza Stary wyjadacz (11,260 p.)
wybrane 2 lipca 2018 przez fyrr
 
Najlepsza
$("#zoomIn").hide();
$(".galeryOption").click(function () {
	$("#zoomIn").show(500);
  $(".galeryOption").off("click");
});
 
 $("#zoomIn").click(function () {
        $("#zoomIn").hide();
        $("#galery").animate({
            height: "717px",
            width: "1200px"
        });
 });

Od tego w jQuery masz off(), które usuwa zdarzenie lub removeEventListener w czystym js.

Kolegi sposób z pod spodu co prawda zadziała ale niepotrzebnie obciąża przeglądarkę - za każdym kliknięciem byłoby sprawdzane czy zmienna ma wartość false - po co?.

komentarz 2 lipca 2018 przez fyrr Użytkownik (910 p.)
Wielkie dzięki, działa jak należy.
komentarz 2 lipca 2018 przez ScriptyChris Mędrzec (190,170 p.)

Kolegi sposób z pod spodu co prawda zadziała ale niepotrzebnie obciąża przeglądarkę - za każdym kliknięciem byłoby sprawdzane czy zmienna ma wartość false - po co?.

Jeśli czepiać się szczegółów, Twój kod przy każdym kliknięciu pobiera referencje do elementów w DOM, co jest bardziej obciążające niż sprawdzenie warunku logicznego. Więc - przyganiał kocioł garnkowi... :P

komentarz 2 lipca 2018 przez Oskar F. Użytkownik (620 p.)
Jak napisałem nie znam się na js ani jQuery. Masz racja jeżeli nie trzeba to nie warto marnować moc naszego komputera. W js jestem kocioł :P
komentarz 3 lipca 2018 przez surfeliza Stary wyjadacz (11,260 p.)

@JSHolic, jak ja na to mogłem nie wpaść... :P

0 głosów
odpowiedź 2 lipca 2018 przez Oskar F. Użytkownik (620 p.)

Nie znam się na JS ale to w każdym języku programowania zadziała. Zrób zmienną najlepiej bool. Jak klikniesz ustaw bool na true.

Dajesz
 

if(bool==false)

{

Tutaj twoja funkcja show

}

 

komentarz 2 lipca 2018 przez fyrr Użytkownik (910 p.)

Muszę coś źle robić, bo nie działa, możesz sprawdzić czy o to chodzi ? 

 

    $("#zoomIn").hide();
    
    let flag = false;

    if (flag == false) {

        $(".galeryOption").click(function () {
            $("#zoomIn").show(500);
        });
        
        flag = true;
        
    }

 

komentarz 2 lipca 2018 przez Oskar F. Użytkownik (620 p.)

 

let chyba nie jest odpowiednikiem bool więć daj

$("#zoomIn").hide();
 
let flag = 0;
 
if (flag == 0) {
 
    $(".galeryOption").click(function () {
        $("#zoomIn").show(500);
    });
     
    flag = 1;
     
}

Jeżeli let jest boolem spróbuj dać jeden znak =

Podobne pytania

0 głosów
1 odpowiedź 210 wizyt
pytanie zadane 18 października 2018 w JavaScript przez Oskar Szkurłat Bywalec (2,780 p.)
0 głosów
3 odpowiedzi 399 wizyt
pytanie zadane 20 czerwca 2018 w HTML i CSS przez niezalogowany
0 głosów
1 odpowiedź 203 wizyt
pytanie zadane 3 grudnia 2017 w JavaScript przez gunaterek Bywalec (2,760 p.)

93,733 zapytań

142,669 odpowiedzi

323,287 komentarzy

63,293 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...