2013-02-12 3 views
3

Как правило, я могу передать событие в анонимной функции Jquery так:Передача объекта события к функции в Jquery

$(".click_me").on("click", function(e) { 
    e.preventDefault(); 
}); 

Теперь, скажем, я удалить анонимную функцию, но все равно хочу передать событие it:

function onClickMe(e){ 
    e.preventDefault(); 
} 

$(".click_me").on("click", onClickMe(e)); 

К сожалению, это не работает так, как ожидалось. Я получаю эту ошибку:

ReferenceError: e is not defined 

Так как же еще я могу передать событие внешней функции?

+1

Это функция _anonymous_, а не «внутренняя». –

+0

@MattBall Спасибо за подсказку. Я исправил свой вопрос. На аналогичной ноте, есть ли правильный термин для того, что я называю «внешними функциями»? – nullnullnull

+0

@timothythehuman Вероятно, просто называется функцией, хотя пример поможет. –

ответ

13

Просто передайте ссылку на функцию, jQuery будет обрабатывать переданные вам аргументы (он всегда передает событие в качестве первого аргумента функции обработчика). Итак:

function onClickMe(e){ 
    e.preventDefault(); 
} 

$(".click_me").on("click", onClickMe); 
+0

Блестящий! Я понятия не имел, что JQuery был таким изящным. – nullnullnull

+0

Confused here - preventDefault() - это функция jQuery (не внутренняя jscript). Как получилось, мы назовем это без $ I, который ожидал бы $ (e) .preventDefault() –

+1

@DavidThorisson Поскольку параметру 'e' в функции передается объект события jQuery, когда событие срабатывает, у которого есть' preventDefault() '. –

Смежные вопросы