2012-01-24 7 views
1

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

Что-то вроде этого, (но это не работает):

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

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

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

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

Я также попытался (только для ада этого)

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

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

ответ

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, у которого был огонь события.

+0

Отличный, надежный благодаря @ Jasper! –