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 здесь.