Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在jQuery中使用参数调用函数_Jquery - Fatal编程技术网

在jQuery中使用参数调用函数

在jQuery中使用参数调用函数,jquery,Jquery,当我单击id为Button1的控件时,它调用一个名为getMakes的函数,我希望能够向它传递一个参数。在这种情况下,将接收数据的控件的id。我做错了什么 $(function () { $('#Button1').click(getMakes("'#output'")) $('#buttonClear').click(function () { $('#output').html(''); }); }); functio

当我单击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');
    }
});
}简单:

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

$('#Button1').click(getMakes("'#output'"))
。。(注意,结尾缺少分号)。。这样做:

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

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

$('#Button1').click(getMakes("'#output'"))
传递
getMakes
的返回值以单击。实际上,您当时正在调用该函数(在执行该行时,而不是在用户单击它时)。这不是您想要的,您实际上想要使用参数调用click事件上的函数。要做到这一点,您需要调用一个无参数函数,该函数反过来使用参数调用您的函数。最简单的方法是使用匿名函数,就像其他人建议的那样

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