передать имя функции непосредственно в событие в jQuery - PullRequest
1 голос
/ 24 января 2012

Я пытаюсь прикрепить функцию непосредственно к событию change в jQuery, но не могу понять это. Мне нужно передать элемент, который изменился как параметр, в вызываемую мной функцию.

Примерно так (но это не работает):

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

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

Следующие работы:

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

Я тоже пытался (просто, черт возьми)

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

Но это тоже не работает.

1 Ответ

7 голосов
/ 24 января 2012
$('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, для которого было инициировано событие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...