2015-12-07 4 views
3

Какая разница между следующим кодом? (e) в концеРазница между функцией (e) и функцией()

jQuery(document).on('click', '.something', function(e) { 

vs. 

jQuery(document).on('click', '.something', function() { 

Спасибо!

+5

Первый передает 'event' объект в анонимной функции, в то время как вторая не делает. Попробуйте выполнить регистрацию переменной. См. Https://api.jquery.com/category/events/event-object/ –

+0

. Технические детали: Объект события * всегда * передается в функцию обратного вызова 'on' в качестве первого * аргумента * (в документации) , но только функция с параметром * * может получить доступ к предоставленному аргументу по имени 'e' - если доступ к такому не требуется, параметр можно безопасно пропустить, и это не повлияет на программу. В обоих случаях доступный аргумент (ы) можно получить через 'arguments'. – user2864740

ответ

1

Параметр e является событием, которое является jQuery event object. Созданы оба случая: event, но для доступа к нему мы передаем его как параметр.

// Case 1 
jQuery(document).on('click', '.something', function(e) { 
    e.which;  // Short form. This is Click Event object. 
}); 

// Case 2 
jQuery(document).on('click', '.something', function() { 
    // There's no reference to the event that's triggered. 
}); 
+1

'window.event' является реализацией, а не стандартом. – nderscore

+0

@nderscore Извините, исправлено. Благодарю. ':)' –

+0

Объект 'window.event' существует только для IE. Это еще не совсем верно. – nderscore

5

Технически нет различий в двух выражениях. 'e' относится к переменной события, которая является необязательной и работает больше как this выражение в jquery. вы можете использовать переменную e для определения определенной информации, такой как цель, которая вызвала событие или любое другое свойство.

jQuery(document).on('click', '.something', function() { 
    alert(this.id); // gives you the id of the element using this 
}); 

jQuery(document).on('click', '.something', function(e) { 
    alert(e.target.id); // gives you the id of the element using event 
}); 

На мой взгляд, самое большое преимущество использования события e является то, что она дает более правильную информацию по сравнению с this, когда обработчики событий вызываются по document.

$(document).on('click',function() 
{ 
    alert($(this).attr("id")); // id as undefined 
}) 

$(document).on('click',function(e) 
{ 
    alert(e.target.id); // gets the correct id 
}) 

Пример: http://jsfiddle.net/twjwuq92/