Почему является объект-событие другим прибытием из jQuery, связывают по сравнению с addEventListener

То, почему это, когда я использую 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);
});
15
задан yodaisgreen 19 May 2010 в 06:04
поделиться

1 ответ

Это потому, что 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 конструктор.

24
ответ дан 1 December 2019 в 03:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: