То, почему это, когда я использую jQuery, связывают объект-событие, который я возвращаю, отличается от объекта-события, я возвращаю использование addEventListener?
Объект-событие, следующий из этого jQuery, связывает, не имеет массива targetTouches (среди прочего), но событие от addEventListener делает. Это - я или является чем-то не прямо здесь?
$(document).ready (function () {
$("#test").bind("touchmove", function (event) {
console.log(event.targetTouches[0].pageX);
// targetTouches is undefined
});
});
по сравнению с.
$(document).ready (function () {
var foo = document.querySelectorAll('#test')
foo[0].addEventListener('touchmove', function (event) {
console.log(event.targetTouches[0].pageX);
// returns the correct values
}, false);
});
Это потому, что jQuery использует свою собственную модель событий .
jQuery просто копирует и нормализует некоторые свойства исходного события в объект события, который вы получаете в качестве первого аргумента обработчика.
Скопированные свойства основаны на Спецификации событий DOM уровня 3 .
Чтобы получить исходный объект события, вы можете:
$(document).ready (function () {
$("#test").bind("touchmove", function (event) {
var e = event.originalEvent;
console.log(e.targetTouches[0].pageX);
});
});
Свойство originalEvent
доступно, и оно будет работать, но не задокументировано, вы можете увидеть, как оно задано за кулисами в jQuery.Event
конструктор.