Javascript 在事件触发器中将参数传递给函数调用

Javascript 在事件触发器中将参数传递给函数调用,javascript,jquery,Javascript,Jquery,现在我有这个 jQuery('.widget-prop').keyup(function() { var prop = jQuery(this).attr('id'); var val = jQuery(this).val(); stuff; } 及 这两个函数是相同的,所以我想通过定义外部函数并使用 jQuery('.widget-prop').click('myFunction'); 但是如何将参数传递给myFunction呢 function myFuncti

现在我有这个

jQuery('.widget-prop').keyup(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').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;
}

首先,您可以将两个处理程序合并为一个:

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;
}

MyFunction
的上下文中,这是您单击的元素。此外,
click
处理程序接受1个参数,因此您的函数签名应该是
function myfunction(event)
,其中事件参数保存有关操作的数据(例如,
event.target
是单击的元素)

这就是您定义处理程序的方式:

function myFunction(event){
    var element = event.target;
    // Note: event.target == this
    //do stuff
}
以下是您将其绑定到事件的方式:

$(".widget-prop").click(myFunction);

MyFunction
的上下文中,这是您单击的元素。此外,
click
处理程序接受1个参数,因此您的函数签名应该是
function myfunction(event)
,其中事件参数保存有关操作的数据(例如,
event.target
是单击的元素)

这就是您定义处理程序的方式:

function myFunction(event){
    var element = event.target;
    // Note: event.target == this
    //do stuff
}
以下是您将其绑定到事件的方式:

$(".widget-prop").click(myFunction);

使用
.on
功能而不是快捷方式
。单击
,并将所有必需的事件作为参数传递:

jQuery('.widget-prop').on('click keyup', function() {
  var prop = jQuery(this).attr('id');
  var val = jQuery(this).val();
  //stuff;
});

编辑:弃用=>快捷方式

使用
上的
功能而不是快捷方式
。单击
并将所有必需的事件作为参数传递:

jQuery('.widget-prop').on('click keyup', function() {
  var prop = jQuery(this).attr('id');
  var val = jQuery(this).val();
  //stuff;
});

EDIT:deprecated=>shortcut

谁说
click()
不推荐使用?没错,它不是不推荐使用的,而是一个快捷功能。对不起,是我的错。谁说
click()
不推荐使用?没错,它不是不推荐使用的,而是一个快捷功能。对不起,是我的错。那么如何将两个参数传递给这个函数呢?如果您有多个函数,那么只需编写匿名函数并在内部调用它们<代码>。单击(函数(){myFunction1();myFunction2();})以及如何将两个参数传递给此函数?如果有多个函数,则只需编写匿名函数并在内部调用它们<代码>。单击(函数(){myFunction1();myFunction2();})