[英]How do I pass arguments to an event handler?
我有一个函数对象,我想使用jquery在click上传递一个参数,但它不起作用。
<script>
var item=232;
$(function(){
$('div').click(fn_clik('Mike'))
})
var fn_clik = function(name){
alert('Name is:' + name + ' item is:' + item)
}
</script>
我不明白它背后的概念。 任何人都可以解释我哪里出错了?
让你正在调用的函数返回一个函数,该函数的名称由参数传递,在一个闭包中:
$('div').click( fn_clik('Mike') );
var fn_clik = function(name){
return function() {
alert('Name is:' + name + ' item is:' + item);
}
}
或者使用匿名函数传递包装使用正确参数调用的原始函数:
$('div').click(function () {
fn_clik('Mike')
});
快速说明,在原始代码中,您调用函数'fn_clik'而不是将其作为对象传递。 所以你的代码正在评估:
$('div').click( undefined );
这是因为你原来的'fn_clik'没有返回值;
如果你写“func(...)”你调用你的函数,你必须写juste写函数名。
像这样 :
$('div').click(fn_clik);
如果你想得到参数,请使用这样的匿名函数:
$('div').click(function () {
fn_clik('Mike')
});
此变量返回元素节点,以及事件返回单击事件。
$("body").click(function (event) {
if (this == $("body")[0]) {
alert("self");
}
});
这是我常常做的,
<script>
var item=232;
$(function(){
$('div').on('click',function(){
fn_clik('Mike');
});
})
function fn_clik(name){
alert('Name is:' + name + ' item is:' + item)
}
</script>
谢谢。
您正在调用函数并在绑定时使用返回值(未定义),而不是获取对事件可以调用的函数的引用。
将函数调用包装在函数表达式中,以便获得对它的引用:
$('div').click(function() { fn_clik('Mike'); });
您还可以使用proxy
方法创建一个绑定了参数的函数:
$('div').click($.proxy(fn_clik, this, 'Mike'));
var item = 232;
$(function(){
$('div').click(function(e){fn_click("Mike");});
})
var fn_clik = function(name){
alert('Name is:' + name + ' item is:' + item)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.