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

jQuery Event wywołuje się po załadowaniu strony

Object Storage Arubacloud
0 głosów
158 wizyt
pytanie zadane 19 czerwca 2023 w JavaScript przez pj-1024 Użytkownik (670 p.)

WItam

Odwzorowuję grę za czasów PRLu - Mini Master Mind. Używam jQuery i gdy dodaję event do przycisku, to po załadowaniu strony event się sam wykonuje.

elmnt.on("click", add_color(elmnt, colors[i])); // Wycinek z kodu więc proszę o nie zwracanie uwagi na zmienne i własne funkcje.

Z góry dziękuję za odpowiedź.

1 odpowiedź

0 głosów
odpowiedź 19 czerwca 2023 przez Comandeer Guru (602,560 p.)
wybrane 19 czerwca 2023 przez pj-1024
 
Najlepsza

Bo do event listenera trzeba przekazać funkcję, Ty przekazujesz wynik wywołania funkcji. Jeśli po nazwie funkcji następuje (), to zawsze się wywoła od razu.

Najwygodniej byłoby tutaj użyć funkcji strzałkowej:

elmnt.on("click", () => {
	add_color(elmnt, colors[i]);
});

 

komentarz 19 czerwca 2023 przez infinityhost Użytkownik (780 p.)
Ja to się nie znam dobrze na tym a nie zadziałałoby elmnt.on("click", function(){add_color(elmnt, colors[i])});   ??? ewentualnie  elmnt.on("click",add_colors);?
komentarz 19 czerwca 2023 przez Comandeer Guru (602,560 p.)
To pierwsze jest praktycznie tożsame z funkcją strzałkową, więc można stosować albo to, albo to. Aczkolwiek dla mnie funkcje strzałkowe są wygodniejsze w takim zastosowaniu.

To drugie nie zadziała, bo nie przekazujemy poprawnych parametrów.
komentarz 19 czerwca 2023 przez infinityhost Użytkownik (780 p.)
AI mi marudzi że strzałkowe lepsze bo wywołują z właściwego zasięgu zmiennych. A ja wolę bindować. To drugie to tak strzeliłem bo tak się setTimeout wywołuje prawda? JS to chyba najpotężniejszy język obecnie.
komentarz 19 czerwca 2023 przez Comandeer Guru (602,560 p.)

AI mi marudzi że strzałkowe lepsze bo wywołują z właściwego zasięgu zmiennych. A ja wolę bindować.

Akurat w tym kodzie to nie ma znaczenia, bo kontekst this nie jest wgl używany.

 To drugie to tak strzeliłem bo tak się setTimeout wywołuje prawda?

setTimeout() się przekazuje funkcję – a więc działają wszystkie te same sposoby zapisu co tu. 

Podobne pytania

+4 głosów
3 odpowiedzi 397 wizyt
0 głosów
2 odpowiedzi 405 wizyt
pytanie zadane 22 maja 2020 w JavaScript przez rob Bywalec (2,440 p.)
0 głosów
1 odpowiedź 231 wizyt

92,669 zapytań

141,567 odpowiedzi

320,037 komentarzy

62,034 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.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...