Какая разница между следующим кодом? (e) в концеРазница между функцией (e) и функцией()
jQuery(document).on('click', '.something', function(e) {
vs.
jQuery(document).on('click', '.something', function() {
Спасибо!
Какая разница между следующим кодом? (e) в концеРазница между функцией (e) и функцией()
jQuery(document).on('click', '.something', function(e) {
vs.
jQuery(document).on('click', '.something', function() {
Спасибо!
Параметр 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.
});
Технически нет различий в двух выражениях. '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/
Первый передает 'event' объект в анонимной функции, в то время как вторая не делает. Попробуйте выполнить регистрацию переменной. См. Https://api.jquery.com/category/events/event-object/ –
. Технические детали: Объект события * всегда * передается в функцию обратного вызова 'on' в качестве первого * аргумента * (в документации) , но только функция с параметром * * может получить доступ к предоставленному аргументу по имени 'e' - если доступ к такому не требуется, параметр можно безопасно пропустить, и это не повлияет на программу. В обоих случаях доступный аргумент (ы) можно получить через 'arguments'. – user2864740