触摸移动一次

时间:2014-03-01 19:35:26

标签: javascript jquery html html5

我的html页面有问题。我想在所有页面中停用触摸移动,除了我要滚动的div。所以我添加了这个js代码:

document.ontouchmove = function (e) { if (e.target.id !== 'rest_comm') { e.preventDefault(); } };

它并不总是有效。

我找到了Oscar Paz的帮助,问题是滚动div里面有很多div。那么除了滚动div和所有包含的div之外,我怎么能在整个页面中停用触摸移动。

1 个答案:

答案 0 :(得分:1)

我认为你的问题是e.target并不总是你的滚动div。如果你有里面的元素,e.target是你触摸的DOM树中最深的元素(它可能是一个段落,一个图像......)。 你要做的是检查e.target是否在你的滚动div中,或者是你的滚动div。基本上是:

    document.addEventListener('touchmove', function(e) {
       var node = e.target;
       while (node && node.id != 'comm_list_content') node = node.parentElement;
       if (!node) e.preventDefault();
    }, false);

这样,如果你触摸你的div,你只会调用preventDefault()。