0

在我的页面上,当您在元素上向右滑动时,该元素会移动。我有以下代码来处理这些滑动:

window.addEventListener("touchstart", touchStart, false);
window.addEventListener("touchmove", touchMove, false);

问题是,它不仅会影响我想要滑动的元素。相反,如果我在页面上的任意位置滑动,它将运行touchMove. 为了解决这个问题,我尝试了:

var content = document.getElementById("content");
content.addEventListener("touchstart", touchStart, false);
content.addEventListener("touchmove", touchMove, false);

这种工作,但是当一个 div 显示(通过用户交互) over#content时,事件仍然会触发。

我考虑的另一个解决方案是将这些事件绑定到 中的元素,这些元素#content应该启用滑动。问题是,这些元素是动态添加到页面中的,所以当在页面加载时调用上面的函数时,这些元素没有被考虑在内。然后我考虑使用 jQuery 的.on()方法,如下所示:

$("#content .row").on("touchmove", touchMove, false);

但这根本不是电话touchMove

有没有更好的方法来完成这一切?当事件侦听器被分配给 only 时touchMove,在不是子元素的元素上被调用是否有意义?#content#content

4

2 回答 2

1

通过将事件附加到文档并为所需元素提供过滤器来尝试这种方式。

$(document).on("touchmove", "#content .row", touchMove);

根据评论编辑,您可以通过这种方式获取事件

$(document).on("touchmove", "#content .row", function(event){
       alert(event.target.id);
});
于 2012-10-20T00:34:21.290 回答
0
$("#content .row").on("touchmove", touchMove, function(){
   // Your code here
});

false or true这里不需要选择器后面的值,因为大多数事件都使用event bubbling.. 在这种情况下,您可以省略它并编写处理程序

于 2012-10-20T00:35:00.560 回答