jQuery ' s.click - przekaż parametry do funkcji użytkownika
Próbuję wywołać funkcję z parametrami używając jQuery .klik, ale nie mogę go uruchomić.
Tak chcę, żeby to działało:
$('.leadtoscore').click(add_event('shot'));
Które wywołują
function add_event(event) {
blah blah blah }
Działa, jeśli nie używam parametrów, 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ę zrobić tę konkretną rzecz?
Wiem, że mogę używać .click(function() { blah }
, ale wywołuję funkcję add_event
z wielu miejsc i chcę to zrobić w ten sposób.
7 answers
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 jQuery click event handler.
Pozwala na przekazanie Mapy danych do obiektu event, który jest automatycznie przesyłany z powrotem do funkcji obsługi zdarzeń przez jQuery jako pierwszy parametr. Mapa danych byłaby przekazywana do funkcji .click()
jako pierwszy parametr, a następnie do funkcji obsługi zdarzeń.
Oto jakiś kod do zilustrowania tego, co ja średnia:
// say your selector and click handler looks something like this...
$("some selector").click({param1: "Hello", param2: "World"}, cool_function);
// in your function, just grab the event object and go crazy...
function cool_function(event){
alert(event.data.param1);
alert(event.data.param2);
}
Wiem, że jest już za późno na to pytanie, ale poprzednie odpowiedzi doprowadziły mnie do tego rozwiązania, więc mam nadzieję, że kiedyś komuś pomoże!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-27 15:00:38
Musisz użyć funkcji anonimowej, takiej jak ta:
$('.leadtoscore').click(function() {
add_event('shot')
});
Możesz wywołać ją tak, jak w przykładzie, po prostu nazwę funkcji BEZ parametrów, jak to:
$('.leadtoscore').click(add_event);
Ale metoda add_event
nie otrzyma 'shot'
jako parametru, ale cokolwiek click
przejdzie do wywołania zwrotnego, czyli obiektu event
itself...so Nie dotyczy w tym przypadku , ale działa dla wielu innych. Jeśli chcesz przekazać parametry, użyj funkcji anonimowej...albo jest jedna Inna opcja, Użyj .bind()
i przekazać dane, Tak:
$('.leadtoscore').bind('click', { param: 'shot' }, add_event);
I dostęp do niego w add_event
, Tak:
function add_event(event) {
//event.data.param == "shot", use as needed
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-17 21:29:38
Jeśli tak to nazwiesz...
$('.leadtoscore').click(add_event('shot'));
...musisz mieć add_event()
return a function, like...
function add_event(param) {
return function() {
// your code that does something with param
alert( param );
};
}
Funkcja jest zwracana i używana jako argument dla .click()
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-17 21:45:03
Udało mi się użyć .on () like so:
$('.leadtoscore').on('click', {event_type: 'shot'}, add_event);
Następnie wewnątrz funkcji add_event
uzyskujesz dostęp do' shot ' w następujący sposób:
event.data.event_type
Zobacz .w dokumentacji () aby uzyskać więcej informacji, podajemy następujący przykład:
function myHandler( event ) {
alert( event.data.foo );
}
$( "p" ).on( "click", { foo: "bar" }, myHandler );
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-07 20:27:34
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 programów obsługi zdarzeń.
//click handler
function add_event(event, paramA, paramB)
{
//do something with your parameters
alert(paramA ? 'paramA:' + paramA : '' + paramB ? ' paramB:' + paramB : '');
}
//bind handler to click event
$('.leadtoscore').click(add_event);
...
//once you've processed some data and know your parameters, trigger a click event.
//In this case, we will send 'myfirst' and 'mysecond' as parameters
$('.leadtoscore').trigger('click', {'myfirst', 'mysecond'});
//or use variables
var a = 'first',
b = 'second';
$('.leadtoscore').trigger('click', {a, b});
$('.leadtoscore').trigger('click', {a});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-28 22:11:19
$imgReload.data('self', $self);
$imgReload.click(function (e) {
var $p = $(this).data('self');
$p._reloadTable();
});
Ustaw obiekt javaScript na element onclick:
$imgReload.data('self', $self);
Get Object from "this" element:
var $p = $(this).data('self');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-27 08:00:40
Dostaję proste rozwiązanie:
<button id="btn1" onclick="sendData(20)">ClickMe</button>
<script>
var id; // global variable
function sendData(valueId){
id = valueId;
}
$("#btn1").click(function(){
alert(id);
});
</script>
Chodzi mi o to, że przekazuję wartość onclick
event do javascript function sendData()
, inicjalizuję zmienną i odbieram ją metodą obsługi zdarzeń jQuery.
Jest to możliwe, ponieważ na początku sendData(valueid)
zostanie wywołana i zainicjalizowana wartość. Następnie po zdarzeniu jQuery get jest wykonywany i używa tej wartości.
Jest to rozwiązanie proste, a dla rozwiązania szczegółowego przejdź tutaj .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-13 12:34:13