• 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
148 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 (601,590 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 (601,590 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 (601,590 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 378 wizyt
0 głosów
2 odpowiedzi 372 wizyt
pytanie zadane 22 maja 2020 w JavaScript przez rob Bywalec (2,440 p.)
0 głosów
1 odpowiedź 226 wizyt

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...