jQuery.click-передать параметры в пользовательскую функцию
Я пытаюсь вызвать функцию с параметрами, используя jQuery .нажать, но я не могу заставить его работать.
вот как я хочу, чтобы это работало:
$('.leadtoscore').click(add_event('shot'));
которых звонки
function add_event(event) {
blah blah blah }
он работает, если я не использую параметры, например:
$('.leadtoscore').click(add_event);
function add_event() {
blah blah blah }
но мне нужно иметь возможность передать параметр через мой .
как я могу сделать эту конкретную вещь?
Я знаю, что могу использовать .click(function() { blah }
, но я называю add_event
функции из нескольких мест и вы хотите сделать это таким образом.
7 ответов
для тщательности я наткнулся на другое решение, которое было частью функциональности, представленной в версии 1.4.3 jQuery обработчик события click.
Он позволяет передать карту данных объекту события, который автоматически возвращается в функцию обработчика событий jQuery в качестве первого параметра. Карта данных будет передана .click()
функция в качестве первого параметра, за которой следует функция обработчика событий.
вот некоторый код, чтобы проиллюстрировать, что я имею в виду:
// 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);
}
Я знаю, что это поздно в игре для этого вопроса, но предыдущие ответы привели меня к этому решению, поэтому я надеюсь, что это поможет кому-то когда-нибудь!
вам нужно использовать анонимную функцию, как это:
$('.leadtoscore').click(function() {
add_event('shot')
});
вы можете вызвать его, как в Примере, просто имя функции без параметры, например:
$('.leadtoscore').click(add_event);
но add_event
метод не получит 'shot'
как это параметр, но скорее что угодно click
переходит к обратному вызову, который является event
сам объект...поэтому он неприменим в этом случае, но работает на многих других. Если вам нужно пройти параметры, используйте анонимную функцию...или, есть один другое используйте .bind()
и передать данные, как это:
$('.leadtoscore').bind('click', { param: 'shot' }, add_event);
и получить доступ к нему в add_event
, например:
function add_event(event) {
//event.data.param == "shot", use as needed
}
если вы называете это так, как у вас это было...
$('.leadtoscore').click(add_event('shot'));
...вам нужно будет иметь add_event()
возвращает функцию, например...
function add_event(param) {
return function() {
// your code that does something with param
alert( param );
};
}
функции и используется в качестве аргумента .click()
.
у меня был успех использования .на () вроде так:
$('.leadtoscore').on('click', {event_type: 'shot'}, add_event);
затем внутри
Да, это старый пост. В любом случае, кому-то это может пригодиться. Вот еще один способ отправки параметров обработчикам событий.
//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});
$imgReload.data('self', $self);
$imgReload.click(function (e) {
var $p = $(this).data('self');
$p._reloadTable();
});
установите объект javaScript в элемент onclick:
$imgReload.data('self', $self);
получить объект из элемента "this":
var $p = $(this).data('self');
Я получаю простое решение:
<button id="btn1" onclick="sendData(20)">ClickMe</button>
<script>
var id; // global variable
function sendData(valueId){
id = valueId;
}
$("#btn1").click(function(){
alert(id);
});
</script>
Я имею в виду, что передать значение onclick
событие javascript function sendData()
, инициализируйте переменную и возьмите ее методом обработчика событий jquery.
это возможно, так как сначала sendData(valueid)
вызывается и инициализирует значение. Затем после выполнения события jQuery get используется это значение.
это прямое решение и для детального решения go здесь.