繁体   English   中英

在jquery中将参数传递给click函数会触发函数而无需单击

[英]passing arguments to click function in jquery fires the function without clicking

嗨,我有一个函数,一旦单击一个元素,就会进行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); 仅在单击元素时才调用该函数。 我已经研究了几个小时,但是没有运气

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

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

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

每当您具有functionname()您实际上就是在调用该函数。 相反, functionname (不带括号)为您提供了对该函数的引用。 由于您不能仅将ajax_call传递给click ,因此必须将其包装在另一个函数中。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM