我在頁面上有一系列的div,您可以向左滑動,這會在下面顯示div。當只有一個元素時,這可以正常工作,但當有多個元素時,它們會一齊滑動,而不是單獨滑動。獲取touchstart上的元素?
爲了解決這個問題,我試過的想法在這裏:Find element finger is on during a touchend event
問題是,現在只有第一個元素被偷走,而剩下的人留固定。關於如何解決這個問題的任何想法?我以爲我可以使用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
'event.target'? – ahren
我認爲沒有什麼是那麼簡單的......你能否把它作爲答案發布,我會將其標記爲已接受。 – Charlie