如何在touchend事件中获得touchstart值?

时间:2011-12-14 05:09:10

标签: javascript jquery ipad touch-event

我想在触发touchend事件时获取touchstart.pageX值,但我没有得到确切的值。它给了我touchend事件的pageX值。我做错了什么?

(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 个答案:

答案 0 :(得分:1)

您应该在结束事件中获取touch变量的.target值。这就是触摸的起点。你甚至不需要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