在 .on('click') 事件处理程序中传递函数和函数参数
Passing function and function argument in .on('click') event handler?
当我单击按钮时,它会说Bruce Wayne is Batman
.在最后一个jQuery行中,对于"click"函数,如果我传递参数"guy",jQuery将不会运行,但是如果我不传入参数,我会得到undefined
。我做错了什么?提前谢谢。
$("div").on('click', 'button', click(guy));
jsFiddle链接,HTML和JS如下。
https://jsfiddle.net/wrj5w1Lk/
<div>
<button>
Click Me! Click Me!
</button>
<p>Hello</p>
</div>
$(document).ready(function() {
var Person = function(first, last, secret) {
this.first = first;
this.last = last;
this.secret = secret;
}
var guy = new Person("Bruce", "Wayne", "Batman");
var click = function(person) {
$(this).closest('div').find('p').text(person.first + " " + person.last + " is " + person.secret);
};
$("div").on('click', 'button', click(guy));
});
您有两个问题,首先您需要将 click()
的调用包装在匿名函数中。其次,您需要将当前button
元素的引用传递给click()
函数。试试这个:
var click = function($element, person) {
$element.closest('div').find('p').text(person.first + " " + person.last + " is " + person.secret);
};
$("div").on('click', 'button', function() {
click($(this), guy);
});
更新的小提琴
我认为您正在寻找的是如何使用 .on()
将自定义数据传递给事件处理程序。该链接引用.on()
函数的可选[ data ]
对象。这允许您将正常event
数据之外的自定义数据传递给事件处理程序以进行进一步处理。示例如下所示:
$(document).ready(function() {
var Person = function(first, last, secret) {
this.first = first;
this.last = last;
this.secret = secret;
}
var guy = new Person("Bruce", "Wayne", "Batman");
var click = function(event) {
$(this).closest('div').find('p').text(event.data.first + " " + event.data.last + " is " + event.data.secret);
};
$("div").on('click', 'button', guy, click);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<button>
Click Me! Click Me!
</button>
<p>Hello</p>
</div>
我已经编辑了您问题中的片段以使用这种传递数据的方法。自定义对象在回调的event.data
对象中传递。通过访问,event.data.[first,last,secret]
可以从回调中引用Person(...)
对象的属性。
相关文章:
- 如何传递函数中的参数
- 传递带有参数的函数
- 在使用 findAndModify 时$set运算符中将函数参数作为字段名称传递
- 如何在 OnClick 函数中传递字符串参数
- 一次将多个对象传递给函数参数
- 在构造控制器、服务等时作为函数参数传递之前列出的角度 JS 变量
- 将传递的函数参数附加到控制器内的$scope
- extjs-使用传递的参数创建自定义函数
- 如果我传递一个参数,则不会调用javascript函数
- 如何传递PHP字符串作为JS函数参数
- 动态添加onclick到元素,传递函数参数
- 订阅事件时传递函数参数
- 如何在javascript模块模式中传递函数参数
- 通过ng-change传递函数参数不工作
- 在使用选择器时传递函数参数的好方法是什么?
- 从c#代码后面传递函数参数
- JavaScript传递函数参数和返回值
- 如何在JSON对象中传递函数参数值作为关键字
- 为什么' this '在作为字符串或引用传递函数参数时发生变化
- 通过JQuery Load从PHP获取或post传递函数参数变量