Zepto管理触摸事件的方式是将侦听器绑定到document.body
上的touchstart
,touchend
和touchmove
事件。然后它执行关于要发送的事件的计算并触发接收到事件的元素上的事件。然后这个事件通过DOM树起泡,唤起每个元素的监听器。
这给了我们防止滑动事件的方式有两种:
首先,你可以这样做:
$('#my-child-element').bind('touchstart touchend touchup', function(event) {
event.stopPropagation();
});
当你的子元素收到一个触摸事件,它会阻止它传播到父元素,最重要的是身体标记。这样可以防止Zepto触摸处理器执行任何操作,阻止在该元素中操作时发生的轻扫,轻击,单击,longTap和doubleTap事件。
因为刷卡事件也泡,你也只是防止起泡,以你的元素侦听页面变化的特定事件挥笔:
$('#my-child-element').bind('swipeLeft swipeRight', function(event) {
event.stopPropagation();
});
这将允许您仍然收到的Zepto内部产生的事件您子元素,但不在外面。 Zepto轻拍事件对您孩子中的所有元素仍然有效。
小提琴这里:http://jsfiddle.net/bnickel/dUuUd/
我相信滑动事件是从文档级事件中生成的。如果你的元素级触摸*事件调用'stopPropigation()',那应该防止产生滑动事件。 – 2013-02-24 18:27:01
你好伙伴对不起,在这里很厚 - 你能解释一个白痴(我!):)我很努力去理解...... – Chris 2013-02-24 18:30:59