Передача параметров функции jQuery - PullRequest
0 голосов
/ 17 июня 2011

Я пытаюсь вызвать функцию в jquery с таким параметром, что

$(document).ready( function() {
    $('#id_pros').bind('change', wordCounter('id_pros_wordCountLabel') );
});

function wordCounter(item){
    ....
}

Если я не передам параметр id_pros_wordCountLabel, он прекрасно работает, но теперь он не вызывает wordCounter.

Какая часть неверна с моим кодом?

Спасибо

Ответы [ 2 ]

1 голос
/ 17 июня 2011

.bind() ожидает аргумент функции, например:

$('#id_pros').bind('change', wordCounter);

Обратите внимание, что в wordCounter нет скобок.Это означает, что это ссылка на функцию, а не вызов функции - что происходит при добавлении скобок.Для решения проблемы используйте анонимную функцию:

$('#id_pros').change(function ()
{
    wordCounter('id_pros_wordCountLabel');
});

(я также изменил .bind('change', ...) на .change(...), что эквивалентно, но более кратко.)

1 голос
/ 17 июня 2011

Правильный способ сделать это:

$(document).ready( function() {
    $('#id_pros').bind('change', function() {
        wordCounter('id_pros_wordCountLabel');
    });
});

Ваш собственный код передает возвращаемое значение из wordCounter (которое вызывается на месте, а не при возникновении события change) в bind. bind ожидает получения функции, а wordCounter, вероятно, возвращает что-то еще, поэтому, когда срабатывает событие change, вы ничего не увидите.

...