在jQuery中使用参数调用函数

时间:2010-11-16 06:22:16

标签: jquery

当我单击一个id为Button1的控件时,它会调用一个名为getMakes的函数,我希望能够将参数传递给它。在这种情况下,将接收数据的控件的id。我究竟做错了什么?

$(function () {

        $('#Button1').click(getMakes("'#output'"))
        $('#buttonClear').click(function () {
            $('#output').html('');
        });
});
function getMakes(myVar) {   
$.ajax({
    type: "POST",
    url: "WebService.asmx/dbAccess2",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (msg) {
        var response = msg.d;
        $.each(response, function (index, value) {
            $(myVar).append(new Option(value, index));
        });
    },
    failure: function (msg) {
        alert('failure');
    }
});

}

3 个答案:

答案 0 :(得分:5)

OJ和雅各布有正确的解决方案,但他们没有解释原因。你的代码,

$('#Button1').click(getMakes("'#output'"))

传递getMakes的返回值以进行单击。你实际上正在调用该函数(当该行被执行时 - 而不是当用户点击它时)。这不是你想要的,你实际上想用参数调用click事件上的函数。要做到这一点,你需要调用一个无参数函数,然后用你的参数调用你的函数。最简单的方法是使用匿名功能,就像其他人建议的那样。

另请注意,您的代码行有一些额外的引号并且缺少分号。不确定这是否是故意的。

答案 1 :(得分:4)

简单:

$('#Button1').click(function() {
    getMakes('#output');
});

答案 2 :(得分:0)

而不是

$('#Button1').click(getMakes("'#output'"))

..(注意你最后错过了一个分号)..这样做:

$('#Button1').click(function() { getMakes("'#output'"); });