0

我使用 Jquery Mobile 的这一部分(将其合并到 Jquery 中)滑动到下一页。

它不会在向左滑动时转移。这怎么可能?

$( document ).on( "swipeleft", function(e) {

   document.location.href = 'http://www.cnn.com';
});

用于滑动的原始 Jquery 移动功能:

(function($) {

  var touchStopEvent, touchMoveEvent, touchStartEvent,
  horizontalDistanceThreshold = 30,
  verticalDistanceThreshold = 75,
  scrollSupressionThreshold = 10,
  durationThreshold = 1000;

  if("ontouchend" in document) {

    touchStopEvent = "touchend.cj_swp";
    touchMoveEvent = "touchmove.cj_swp";
    touchStartEvent = "touchstart.cj_swp";

  }
  else {

    touchStopEvent = "mouseup.cj_swp";
    touchMoveEvent = "mousemove.cj_swp";
    touchStartEvent = "mousedown.cj_swp";

  }

  $.fn.touchSwipe = function(cb, prevent) {

    if(prevent) this.data("stopPropagation", true);
    if(cb) return this.each(swipeBoth, [cb]);

  }

  $.fn.touchSwipeLeft = function(cb, prevent) {

    if(prevent) this.data("stopPropagation", true);
    if(cb) return this.each(swipeLeft , [cb]);

  }

  $.fn.touchSwipeRight = function(cb, prevent) {

    if(prevent) this.data("stopPropagation", true);
    if(cb) return this.each(swipeRight, [cb]);

  }

  function swipeBoth(cb) {

    $(this).touchSwipeLeft(cb).touchSwipeRight(cb);

  }

  function swipeLeft(cb) {

    var $this = $(this);

    if(!$this.data("swipeLeft")) $this.data("swipeLeft", cb);

    if(!$this.data("swipeRight")) addSwipe($this);

  }

  function swipeRight(cb) {

    var $this = $(this);

    if(!$this.data("swipeRight")) $this.data("swipeRight", cb);

    if(!$this.data("swipeLeft")) addSwipe($this);

  }

  $.fn.unbindSwipeLeft = function() {

    this.removeData("swipeLeft");

    if(!this.data("swipeRight")) this.unbindSwipe(true);

  }

  $.fn.unbindSwipeRight = function() {

    this.removeData("swipeRight");

    if(!this.data("swipeLeft")) this.unbindSwipe(true);

  }

  $.fn.unbindSwipe = function(changeData) {

    if(!changeData) this.removeData("swipeLeft swipeRight stopPropagation");

    return this.unbind(touchStartEvent + " " + touchMoveEvent + " " + touchStopEvent);

  }

  function addSwipe($this) {

    $this.unbindSwipe(true).bind(touchStartEvent, touchStart);

  }

  function touchStart(event) {

    var time = new Date().getTime(),
    data = event.originalEvent.touches ? event.originalEvent.touches[0] : event,
    $this = $(this).bind(touchMoveEvent, moveHandler).one(touchStopEvent, touchEnded),
    pageX = data.pageX,
    pageY = data.pageY,
    newPageX,
    newPageY,
    newTime;

    if($this.data("stopPropagation")) event.stopImmediatePropagation();

    function touchEnded(event) {

      $this.unbind(touchMoveEvent);

      if(time && newTime) {

        if(newTime - time < durationThreshold && Math.abs(pageX - newPageX) > horizontalDistanceThreshold && Math.abs(pageY - newPageY) < verticalDistanceThreshold) {

          if(pageX > newPageX) {

            if($this.data("swipeLeft")) $this.data("swipeLeft")("left");

          }
          else {

            if($this.data("swipeRight")) $this.data("swipeRight")("right");

          }

        }

      }

      time = newTime = null;

    }

    function moveHandler(event) {

      if(time) {

        data = event.originalEvent.touches ? event.originalEvent.touches[0] : event;
        newTime = new Date().getTime();
        newPageX = data.pageX;
        newPageY = data.pageY;

        if(Math.abs(pageX - newPageX) > scrollSupressionThreshold) event.preventDefault();

      }

    }

  }


})(jQuery);
4

0 回答 0