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