如何在.click()函数中传递参数?

我希望在以下情况下将参数传递给click()处理函数:

 function edit_tab(val){ var prev_tab = $("#current_tab").html(); if (prev_tab == 1) { $('.edit-basic-info').click(a); // here I want to pass some argument "a". } } 

如何在上面的代码中传递参数a? 我试图做的方式不起作用。

您可以使用trigger()'s extraParameters将其他参数传递给您的处理程序:

来自trigger()文档:

extraParameters类型:Array或PlainObject要传递给事件处理程序的其他参数。

示例(也来自文档):

 $( "#foo" ).on( "custom", function( event, param1, param2 ) { alert( param1 + "\n" + param2 ); }); $( "#foo").trigger( "custom", [ "Custom", "Event" ] ); 

使用闭包:

 function doSomething(myParam) { return function(event) { // Use both myParam and event here }; } 

并在您的事件处理程序中:

 $('#foo').on('click', doSomething('parameter')); // Works fine 

这样做的原因是对doSomething('parameter')的调用返回一个函数 ,内部函数在click处理程序调用之前不会执行,并且它可以使用从外部传递给它的所有参数。

你可以这样做更多

 var message = 'check'; $('button').click({msg: message},functionFoo); function functionFoo(e){ alert(e.data.msg); }