jQuery函数参数传递

时间:2011-06-17 12:31:32

标签: jquery function parameter-passing

我尝试使用参数调用jquery中的函数

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

function wordCounter(item){
    ....
}

如果我没有传递参数id_pros_wordCountLabel,它的效果很好,但现在它没有调用wordCounter。

我的代码哪个部分出错?

由于

2 个答案:

答案 0 :(得分:1)

正确的做法是:

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

您自己的代码会将wordCounter返回值(当场调用,而不是在change事件触发时)传递给bindbind期望收到一个函数,wordCounter可能会返回其他内容,因此当change事件触发时,您看不到任何事情发生。

答案 1 :(得分:1)

.bind()需要一个函数参数,如下所示:

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

请注意wordCounter上没有括号。这意味着它是对函数的引用,而不是对函数的调用 - 这是在添加括号时发生的情况。使用匿名函数来解决问题:

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

(我也将.bind('change', ...)更改为.change(...),这相当于更简洁。)