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

时间:2015-08-11 10:31:53

标签: javascript jquery

我希望在以下情况下将参数传递给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?我试图做的方式不起作用。

4 个答案:

答案 0 :(得分:6)

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

来自trigger()文档:

  

extraParameters类型:Array或PlainObject附加参数   传递给事件处理程序。

示例(也来自文档):

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

$( "#foo").trigger( "custom", [ "Custom", "Event" ] );

答案 1 :(得分:2)

使用闭包:

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

在您的事件处理程序中:

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

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

答案 2 :(得分:-1)

    <script>
    function edit_tab(val){
                var prev_tab=$("#current_tab").html();
                if(prev_tab==1){
                    $('.edit-basic-info').bind('click', function () {  
                       fndosomething(a)
//pass value in that function and use it

     });
                }
    }
    </script>

答案 3 :(得分:-1)

你可以这样做更多

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

function functionFoo(e){
 alert(e.data.msg);
}