Как получить значение touchstart в событии touchend?
Я хочу получить значение touchstart.pageX при возникновении события touchend, но не получаю точное значение. Это дает мне pageX значение события touchend. Что я делаю не так?
(function($){
$.fn.extend({
//pass the options variable to the function
swipeTest: function(options) {
var touchStart;
var options = $.extend(defaults, options);
//initilaized objects
function init(thisObj){
thisObj.addEventListener('touchstart', function(e) {
var touch = e.touches[0] || e.changedTouches[0];
touchStart = touch;
console.log('Value of touchStart.pageX in touchstart method: ' + touchStart.pageX);
}, false);
thisObj.addEventListener('touchend', function(e) {
var touch = e.touches[0] || e.changedTouches[0];
console.log('Value of touchStart.pageX in touchend method: ' + touchStart.pageX);
}, false);
}
return this.each(function() {
init(this);
});
}
});
})(jQuery);
После удара по элементу, я получаю это в консоли (проведите слева направо)
Value of touchStart.pageX in touchstart method: 132
Value of touchStart.pageX in touchend method: 417
Value of touchStart.pageX in touchstart method: 32
Value of touchStart.pageX in touchend method: 481
Почему я не получаю одинаковое значение в обоих методах? Я указываю на ту же переменную, хотя!
1 ответ
Решение
Вы должны получить значение.target переменной touch в вашем конечном событии. Вот откуда началось прикосновение. Вам даже не нужна переменная touchStart. Прикосновение в конечном событии содержит всю необходимую информацию.
//in your touchend handler, after touch = blah blah blah
var startnode = touch.target; //gets you the starting node of the touch
var x = startnode.pageX
var y = startnode.pageY