2013-07-29 85 views
0

我想在div位於前景時禁用滾動機構。 div是可滾動的,我不希望身體與它一起滾動。我在瀏覽器中完成了這項工作,但它在移動設備中無法使用。我需要做什麼,從當DIV是開放的變化:使用css禁用移動滾動功能

$('body').css('overflow', 'hidden'); 

當股利關閉:

$('body').css('overflow', 'auto'); 

但正如我所說,它沒有移動(iOS或Android合作)。我試過epreventdefault()也沒有幫助。 CSS的獲取與的onclick事件改變了......

+0

您在'auto''中缺少''''。嘗試放入一個_parent_ div - '...

...
',並使用'$('。main').css('overflow','hidden');'。 – Vucko

+0

這也不起作用,它也停止在瀏覽器中工作。你可以請參考我的其他職位,因爲我擁有整個代碼?我試過使用iScroll,但沒有奏效。現在我正在嘗試使用純CSS。 http://stackoverflow.com/questions/17927179/iscroll-a-dynamically-filled-div-only-without-scrolling-main-page-also – user2025469

+1

然後嘗試與[niceScroll](http://areaaperta.com/nicescroll /)。 – Vucko

回答

1

這個工作對我來說:

document.body.scroll = "no"; 
document.body.style.overflow = 'hidden'; 
document.height = window.innerHeight; 

document.body.addEventListener('touchmove', function(e){ e.preventDefault(); }); 
1

面臨着類似的問題,移動滾動造成了混亂與我的滾動div的和不必要的滾動體,的TouchMove監聽事件後是關鍵。我遇到了一些我必須弄清楚的事情。一,爲了移除事件監聽器,並給你的身體回滾它(就像我的情況,從右側滑入並覆蓋整個窗口的菜單),你必須命名包含事件監聽器的函數,通過這種方式,您可以調用與removeEventListener一起刪除的相同函數。

var prevent = function(e){ 
    e.preventDefault(); 
}; 

function menuOpen(){ 
    document.body.addEventListener('touchmove', prevent); 
}; 

function menuClose(){ 
    document.body.removeEventListener('touchmove', prevent); 
};