• 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

0 głosów
469 wizyt
pytanie zadane 19 czerwca 2023 w JavaScript przez pj-1024 Użytkownik (690 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 (607,960 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 (607,960 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 (607,960 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 1,269 wizyt
0 głosów
2 odpowiedzi 894 wizyt
pytanie zadane 22 maja 2020 w JavaScript przez rob Bywalec (2,440 p.)
0 głosów
1 odpowiedź 399 wizyt

93,732 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.

...