我有一个在AngularJs中开发的应用程序,正在使用iScroll,在列表或网格上创建一个滚动条。在滚动一段时间进行触摸和拖动时,会触发嵌套元素上的“单击”事件。
我的问题是,如何避免这种情况发生?
$('.foo').on('click', function(e){ ... });
我们说列表如下:
<div id="iscroll_instance_will_work_here">
<div class="scrollable">
<ul>
<li class="foo"> ... </li>
<li class="foo"> ... </li>
</ul>
</div>
</div>
感谢您的期待!
/ *更新** /
用户Rob建议,并且工作得很好,这是一个例子:
document.addEventListener('touchstart', function(e) {
e.preventDefault();
console.log("touchStart triggered!");
$('html').addClass('isDragging');
}, false);
document.addEventListener('touchend', function(e) {
e.preventDefault();
console.log("touchEnd triggered!");
setTimeout(function(){
$('html').removeClass('isDragging');
}, 200);
}, false);
您可以删除超时!在我的情况下使它更好地工作;)
答案 0 :(得分:1)
假设您可以在拖动开始或其他任何设置变量或类。然后在.foo单击事件函数中,如果您的dragstart引用为true,则为e.preventDefault()。
然后一定要取消设置变量或删除阻止停止的类。