将参数传递给事件触发器中的函数调用
Pass parameters to function call in event trigger
现在我有这个
jQuery('.widget-prop').keyup(function() {
var prop = jQuery(this).attr('id');
var val = jQuery(this).val();
stuff;
}
和
jQuery('.widget-prop').click(function() {
var prop = jQuery(this).attr('id');
var val = jQuery(this).val();
stuff;
}
两个函数是相同的,所以我想通过定义外部函数并调用它来简化它
jQuery('.widget-prop').click('myFunction');
但是如何将参数传递给 myFunction?
function myFunction(element) {
stuff;
}
谢谢
去掉那些引号...
jQuery('.widget-prop').click(myFunction);
首先,
您可以将两个处理程序合并为一个:
jQuery('.widget-prop').on('click keyup', function() {
var prop = jQuery(this).attr('id');
var val = jQuery(this).val();
// stuff;
});
或者对于旧版本的jQuery:
jQuery('.widget-prop').bind('click keyup', function() { // ... });
其次,jQuery 会自动将当前元素应用于您提供的任何函数,因此当您执行此操作时,this
关键字仍将是引发事件的元素:
jQuery('.widget-prop').on('click keyup', myHandler);
function myHandler() {
var prop = jQuery(this).attr('id');
var val = jQuery(this).val();
// stuff;
}
使用 .on
函数而不是快捷方式.click
并将所有必需的事件作为参数传递:
jQuery('.widget-prop').on('click keyup', function() {
var prop = jQuery(this).attr('id');
var val = jQuery(this).val();
//stuff;
});
编辑:已弃用 =>快捷方式
在MyFunction
this
的上下文中,是你点击的元素。此外,click
处理程序采用 1 个参数,因此在事件参数保存有关操作的数据的位置应function MyFucntion(event)
函数签名(例如 event.target
是单击的元素(。
因此,这就是您定义处理程序的方式:
function myFunction(event){
var element = event.target;
// Note: event.target == this
//do stuff
}
这就是将其绑定到事件的方式:
$(".widget-prop").click(myFunction);
相关文章:
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- 如何在Javascript函数调用中循环变量
- Javascript:应为赋值或函数调用,但实际看到的却是表达式
- 如何远程检查JavaScript应用程序的函数调用堆栈
- javascript函数调用不起作用
- 为什么这个函数调用会破坏程序并导致未定义的变量
- 如何通过函数调用设置图像的src
- 从全局函数调用Ember控制器上的方法
- 为什么Jquery$.ajax在函数调用中触发所有statusCode,即使调用成功
- JavaScript函数调用(arg1)(arg2)
- 打印链接时,将javascript函数调用到链接中
- 在函数调用中封装数据除了隐藏数据之外还有什么优点
- 无法从JavaScript中的函数调用对象属性
- 对中的函数调用进行排序是回调的唯一方法
- 函数调用方法有什么用
- Javascript:JSHint:应为赋值或函数调用,但实际看到的却是表达式
- HTML5(Bootstrap)通过函数调用运行动画
- 函数调用不起作用
- 将参数传递给事件触发器中的函数调用