将参数传递给jquery中的click函数会触发该函数而不会单击

时间:2010-12-18 11:36:08

标签: javascript jquery click

您好 我有一个函数,一旦单击一个元素,就会调用ajax。我使用这段代码:

$(document).ready(function()
{
function ajax_call(offset, length) {
$.ajax({method: "get", 
    url: "file.php",
    data: "offset="+ offset,

    success: function(returnedData)
        {     
            $("#content").html(returnedData);
        }
});
}

$("#profile").click(ajax_call(0, 1000));

});

问题在于这一行:

$("#profile").click(ajax_call(0, 1000));

当我将参数传递给ajax_call函数时,该函数在页面加载时运行,无需任何用户干预,但是当我删除这样的参数时: $("#profile").click(ajax_call);仅在单击元素时才调用该函数。我已经研究了几个小时这个问题,但没有运气

1 个答案:

答案 0 :(得分:1)

这会立即调用函数ajax_call(0, 1000)并将返回值作为事件处理程序传递。

您必须将其包装在匿名函数中:

$("#profile").click(function() {
    ajax_call(0, 1000);
});

每当你有functionname()时,你实际上正在调用该函数。 functionname代替(不带括号)为您提供函数的引用。因为你不能只将ajax_call传递给click,所以你必须将它包装在另一个函数中。

因此匿名函数function(){...}作为事件处理程序传递,当它被调用时,它会执行ajax_call(0, 1000)