在jQuery中使用参数调用函数

The*_*Man 3 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');
    }
});
Run Code Online (Sandbox Code Playgroud)

}

mpe*_*pen 5

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

$('#Button1').click(getMakes("'#output'"))
Run Code Online (Sandbox Code Playgroud)

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

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