在触摸设备上,使用javascript创建滚动,如何防止触摸触发点击?

时间:2013-11-06 17:09:37

标签: javascript jquery jquery-mobile

我有一个在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);

您可以删除超时!在我的情况下使它更好地工作;)

1 个答案:

答案 0 :(得分:1)

假设您可以在拖动开始或其他任何设置变量或类。然后在.foo单击事件函数中,如果您的dragstart引用为true,则为e.preventDefault()。

然后一定要取消设置变量或删除阻止停止的类。