代码之家  ›  专栏  ›  技术社区  ›  The Muffin Man

jquery中带参数的调用函数

  •  3
  • The Muffin Man  · 技术社区  · 14 年前

    当我单击一个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 回复  |  直到 14 年前
        1
  •  5
  •   mpen    14 年前

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

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

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

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

        2
  •  4
  •   Jacob Relkin    14 年前

    简单:

    $('#Button1').click(function() {
        getMakes('#output');
    });
    
        3
  •  0
  •   OJ.    14 年前

    而不是

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

    …(注意,结尾处缺少分号)。执行此操作:

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