数日間ネットを検索していますが、問題の解決策が見つかりません。私はモバイル サイトを構築しています。そこには、指をスワイプして水平方向にスクロールできる要素があります。これまでのところ、これはうまく機能します。
スワイプ中にページが垂直方向にスクロールされないようにするために、event.preventDefault() を touchmove イベントに追加しました。ここに問題があります。ユーザーがこの要素を垂直にスワイプしながらページをスクロールできるようにしたいのですが、60 ピクセル (垂直) としましょう。これどうやってするの?私が使用したコードでは、「else」(スクロール長が 70px を超える場合) が実行されますが、スクロールは行われません。私がやりたいことは可能ですか?その場合はどうすればよいですか?
ここに私が試したコードがあります:
$(Carousel_Wrapper).bind('touchstart', function(event)
{
// Some other stuff happens here
// Set last y-coord
Carousel_LastPageY = event.originalEvent.touches[0].pageY;
// Bind the touchmove event
$(Carousel_Wrapper).bind('touchmove', function(event)
{
// The function which scrolls the content of the element
Carousel_Drag(event.originalEvent.touches[0].pageX, event);
// Calculate the vertical swipe length
var Carousel_VerticalSwipeLength = event.originalEvent.touches[0].pageY - Carousel_LastPageY;
// Convert to a positive value
if(Carousel_VerticalSwipeLength < 0)
{
Carousel_VerticalSwipeLength = Carousel_VerticalSwipeLength * -1;
}
// If the vertical scroll-length is less than 70px
if(Carousel_VerticalSwipeLength < 70)
{
event.preventDefault();
}
// The scroll-length was more than 70px, resume scrolling
else
{
// I've tried this:
return true;
// Then this:
$(Carousel_Wrapper).unbind('touchmove');
// And at last this:
$(Carousel_Wrapper).unbind('touchmove');
$(Carousel_Wrapper).trigger('touchmove');
}
});
});
どんな助けでも大歓迎です!
ありがとう、ヘンリック