ページ上に一連のdivがあり、左にスワイプすると、その下にdivが表示されます。これは、要素が1つしかない場合は正常に機能しますが、要素が複数ある場合は、1つだけでスワイプするのではなく、すべてを同時にスワイプします。
これを改善するために、私はここでアイデアを試しました:タッチエンドイベント中に要素の指を見つける
問題は、最初の要素だけがスワイプされ、残りの要素は静止したままになることです。これを修正する方法について何かアイデアはありますか?使用できると思いthis
ましたが、常にwindow
オブジェクトを返します。
コード:
var originalCoord = {
x: 100,
y: 100
}
var finalCoord = {
x: 100,
y: 100
}
function touchMove(event) {
event.preventDefault();
finalCoord.x = event.targetTouches[0].pageX
finalCoord.y = event.targetTouches[0].pageY
}
function touchEnd(event) {
var changeY = originalCoord.y - finalCoord.y
if (changeY < 30 && changeY > (30 * -1)) {
changeX = originalCoord.x - finalCoord.x
if (changeX > 10) {
var elem = document.elementFromPoint(event.pageX, event.pageY);
console.log(elem);
$(elem).css("margin-left", "-54px");
setTimeout(function () {
$(elem).css("margin-left", "0px");}
, 500);
}
}
}
function touchStart(event) {
originalCoord.x = event.targetTouches[0].pageX
originalCoord.y = event.targetTouches[0].pageY
finalCoord.x = originalCoord.x
finalCoord.y = originalCoord.y
}
this.addEventListener("touchstart", touchStart, false);
this.addEventListener("touchmove", touchMove, false);
this.addEventListener("touchend", touchEnd, false);
デモ(iOSでのみ機能): http: //www.codekraken.com/testing/snowday/swipe.html