Próbuję wywołać funkcję z parametrami za pomocą .click jQuery, ale nie mogę jej uruchomić.
Oto jak chcę, żeby to działało:
$('.leadtoscore').click(add_event('shot'));
który wzywa
function add_event(event) {
blah blah blah }
Działa, jeśli nie używam parametrów, takich jak to:
$('.leadtoscore').click(add_event);
function add_event() {
blah blah blah }
Ale muszę być w stanie przekazać parametr do mojej add_event
funkcji.
Jak mogę to zrobić?
Wiem, że mogę korzystać .click(function() { blah }
, ale wywołuję tę add_event
funkcję z wielu miejsc i chcę to zrobić w ten sposób.
jquery
function
parameter-passing
Paul Hoffer
źródło
źródło
patricks
odpowiedzi, która moim zdaniem jest świetnym rozwiązaniem: jsfiddle.net/naRRk/1Odpowiedzi:
Dla dokładności natknąłem się na inne rozwiązanie, które było częścią funkcjonalności wprowadzonej w wersji 1.4.3 procedury obsługi zdarzeń kliknięcia jQuery .
Pozwala przekazać mapę danych do obiektu zdarzenia, który jest automatycznie przekazywany do funkcji obsługi zdarzeń przez jQuery jako pierwszy parametr. Mapa danych byłaby przekazywana do
.click()
funkcji jako pierwszy parametr, a następnie funkcja obsługi zdarzeń.Oto kod ilustrujący to, co mam na myśli:
Wiem, że na to pytanie jest późno w grze, ale poprzednie odpowiedzi doprowadziły mnie do tego rozwiązania, więc mam nadzieję, że kiedyś komuś to pomoże!
źródło
var param_obj = {data : {param1: "Hello", param2: "World"}}; cool_function(param_obj);
?Musisz użyć takiej anonimowej funkcji:
Możesz to nazwać tak, jak w przykładzie, po prostu nazwę funkcji bez parametrów, jak poniżej:
Ale
add_event
metoda nie otrzyma'shot'
tego, co jest parametrem, a raczej cokolwiekclick
przejdzie do jej wywołania zwrotnego, które jest samymevent
obiektem ... więc nie ma zastosowania w tym przypadku , ale działa dla wielu innych. Jeśli potrzebujesz przekazać parametry, należy anonimową funkcję ... czy istnieje jedna inna opcja, wykorzystywanie.bind()
i przekazywanie danych, jak poniżej:I uzyskaj do niego dostęp w
add_event
następujący sposób:źródło
click
obsługi. W anonimowej metodzie i.bind()
powyższych przykładach, których możesz użyćthis
, będzie ona odnosić się do.loadtoscore
klikniętego (zgodnie z oczekiwaniami). W ostatnim przykładzieadd_event(event)
to samo jest prawdą, użyjthis
lub$(this)
i będzie to, czego chcesz.function(){ add_event('shot', $(this));}
ifunction add_event(event, element){...}
.element
byłby tu elementem jQuery (działabind()
jednak z, jak wspomniał Nick).$(this)
wewnątrz funkcji, na przykład: jsfiddle.net/tSu5tJeśli nazwiesz to tak, jak to miałeś ...
... musisz
add_event()
zwrócić funkcję, na przykład ...Funkcja jest zwracana i używana jako argument dla
.click()
.źródło
event
parametr. Powinienem to załączyć. : o)Miałem sukces używając .on () tak:
Następnie wewnątrz
add_event
funkcji masz dostęp do „strzału” w następujący sposób:Aby uzyskać więcej informacji, zobacz dokumentację .on () , podając następujący przykład:
źródło
Tak, to jest stary post. Niezależnie od tego, ktoś może uznać to za przydatne. Oto inny sposób wysyłania parametrów do procedur obsługi zdarzeń.
źródło
Ustaw obiekt javaScript na element onclick:
pobierz Obiekt z „tego” elementu:
źródło
Dostaję proste rozwiązanie:
Mam na myśli to, że przekazujemy
onclick
zdarzenie value dojavascript function sendData()
, inicjalizujemy zmienną i bierzemy ją za pomocą metody obsługi zdarzeń jquery.Jest to możliwe, ponieważ najpierw
sendData(valueid)
zostaje wywołana i zainicjowana wartość. Następnie po wykonaniu zdarzenia jquery zostanie wykonane i użyje tej wartości.Jest to proste rozwiązanie, a szczegółowe informacje można znaleźć tutaj .
źródło