2012-02-22 27 views
1

在我的移动网络应用程序,我有这个撤销对单个元素的一般preventDefault?

//Prevent scrolling in entire document 
document.ontouchmove = function(e){ e.preventDefault(); } 

..这使得它看起来少了很多“威比”,因为身体不能滚动。

不幸的是,这也从工作停止输入滑块我有(iPhone只,在Chrome正常工作)

<input type="range" class="slider" min="1" max="50"> 

如何扭转的preventDefault这个特定元素?

回答

1

试试这个你可以检查e.target和的preventDefault:

document.ontouchmove = function(e){ 
    if(e.target && e.target.className.indexOf('slider')==-1) 
    e.preventDefault(); 
} 
+0

不错!结束hasAttribute版本,谢谢! – jenswirf 2012-02-22 11:08:45

1

只有当目标不在类型范围的输入

document.ontouchmove = function(e){ 
    var $target = $(e.target); 
    if($target.is('input') && $target.attr('type') === 'range'){ 
    //do nothing 
    }else{ 
    e.preventDefault(); 
    } 
} 
0

怎么可以这样做,只要这个类滑块正在使用做一些事情以外的其他预防

document.ontouchmove = function(e){ 
     if(e.target.hasClass('slider')) 
     { //dosomething } 
     else 
{ e.preventDefault(); 
} 
    }