2016-02-07 3 views
0

i'am пытается справиться с простым случаем JQuery щелчка, как этогоJQuery доступ щелкнул элемент без использования закрытия

$('nav.menu a').on('click', function(){ 
    console.log($(this)); // returns the DOM element 
}); 

Но так как я хотел бы повторно закрыть, я изменить его на нормальный функция:

function myClickCallback(event, someParam){ 
    console.log($(this)); // returns the 'window' obj 
} 

$('nav.menu a').on('click', myClickCallback(event, someParam)); 

Таким образом, вопрос, как я могу получить доступ к Clicked элемент из функции myClickCallback

+1

'$ ('nav.menu а') на ('нажмите', функция (событие) {myClickCallback.call (это, event, someParam);}); '??? –

+0

это работает, но мне было интересно, возможно ли это сделать, не обертывая мою функцию в анонимную функцию. – stilllife

+0

Вы должны каким-то образом установить соответствующий контекст. Я не вижу лучшего способа, если вам нужно передать некоторый дополнительный параметр обработчику событий –

ответ

2

Вы можете использовать event.target

function myClickCallback(event){ 
    console.log($(event.target)); 
} 

$('nav.menu a').on('click', myClickCallback); 

Если вы хотите передать какой-либо параметр в функцию, вы можете воспользоваться транспортным механизмом event.data. event.data содержит параметр данных, передаваемый $.on, когда функция обработчика событий называется:.

function myClickCallback(event){ 
    console.log('event on ' + $(event.target)); 
    console.log('param ' + event.data); 
} 

$('nav.menu a').on('click', null, 'theParam', myClickCallback); 
+0

'event.target' может отличаться от' this' –

+0

yep, $ (event.target) возвращает 'document', так что это не щелкнутый элемент DOM – stilllife

+0

@MirkoGuarnier вы использовали' $ ('nav.menu a') .on ('click', myClickCallback) '? – wero

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