2014-03-01 95 views
0

我的html頁面出現問題。我想停用觸摸移動所有頁面,除了我想要滾動的div。所以我添加此JS代碼:觸摸移動作品一次

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

它並不總是奏效。

我發現與奧斯卡帕斯的幫助,問題是滾動div有很多divs裏面。那麼我怎樣才能禁用觸摸整個頁面移動除了滾動div和其所有包括的div。

+0

如果只有在滾動後屏幕中可見的東西是這個div(rest_comm),當然它會阻止滾動,無論你做什麼.. – Hardy

+0

這個div只是頁面高度的50%。所以它不僅在滾動後可見。 – giorgos

回答

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()。

+0

我的滾動div裏面有很多div。我嘗試了它,但它不起作用。 – giorgos

+0

你能告訴我是否有任何錯誤?我沒有觸摸設備來測試它,但這是主意(我以前使用過這種技術)。也許你可以發佈你的代碼jsfiddle? –

+0

這裏是我的代碼:http://jsfiddle.net/8ea4R/ – giorgos