将函数名称直接传递给jQuery中的事件

时间:2012-01-24 18:47:40

标签: jquery function

我正在尝试将函数直接附加到jQuery中的change事件,但我无法弄明白。我需要将作为参数更改的元素传递给我正在调用的函数。

像这样的东西,(但它不起作用):

var fun = function( trigger ){
  // do something
};

$( 'select' ).change( fun( $(this) ) );

以下作品:

$( 'select' ).change( function(){
  fun( $(this) );
});

我也试过(只是为了它的地狱)

$( 'select' ).bind( 'change', fun( $(this) ) );

但它也不起作用。

1 个答案:

答案 0 :(得分:7)

$('select').change(fun);

会做的伎俩。您可以在this功能中访问fun

以下是一个例子:

var fun = function(){
    console.log(this);//output will be the DOM element that had the `change` event fire
};

$( 'select' ).change( fun );

您的第二个解决方案有效,因为您作为事件处理程序传递的匿名函数可以访问this变量,然后您将其传递给fun函数。传递给jQuery事件处理程序的任何函数都将收到this变量,该变量存储对其上发生事件的DOM元素的引用。