2014-03-28 69 views
0

我試圖禁用除了一個格,這是一個模式彈出滾動整個HTML。在手機上,它延伸到屏幕的底部,所以我只需要那個div,我們將爲此撥打#div100如何選擇除了一個DIV

我敢肯定,一旦我有這個,我可以拆散重新啓用滾動一次模態關閉。

如何禁用除了一個DIV滾動?

HTML

<html> 
    <body> 
     <div id="container"> 
      <div id="div1">...</div> 
      <div id="div100">...</div> 
      <div id="div3">...</div> 
     </div> 
     <div id="upper-div">...</div> 
    </body> 
</html> 

JS

$('.button').bind("click touchend", function(){ 
     $('div').not('#div100').bind('touchmove', false); 
}); 

我想它會更容易通過調用div而非bodyhtml,但我不介意,如果它更容易做到這一點bodyhtml

+0

沒有'.button'元件 –

+0

的.button處於的div之一。它在div1中。我沒有列出它,因爲我認爲它不是問題的答案 – user3427494

回答

0

我建議稍微不同的方法:選擇HTML querySelectorAll("*")的每個元素都應該這樣做,然後循環並綁定「touchmove」「假」每個那些。然後,選擇#div100,並在那裏解除綁定。

您可能必須正是你學以致用元素調整「querySelectorAll,」具有約束力的東西#div100的祖先可向下傳播到#div100。因此,document.querySelectorAll可能不是最好的地方,而是#div100的parentNode,所以只有#div100的兄弟姐妹才能獲得該綁定。當然,使用jQuery,你可以選擇你想要的任何方法的元素。我只是引用了querySelectorAll,因爲它是我經常在香草中使用的東西。

編輯:

嘗試這樣:

$("container").each(function(){ 
     $(this).bind('touchmove', false); 
    } 
    $("#div100").bind('touchmove', true); 

或者,你可以這樣做:

$("container").each(function(){ 
     if ($(this)!=$("#div100")){ 
      $(this).bind('touchmove', false); 
     } 
    } 

無論哪種方式應該工作。請原諒我的語法,我並不熟悉jquery。

+0

你能給我一個例子,我以前從未使用過,也不知道如何實現它。這將是一個很大的幫助! – user3427494

+0

我會編輯我的答案。 – Helpful

+0

那裏,那是更好嗎? – Helpful

0
$('.button').bind("click touchend", function(){ 
    if($('div').attr("id") == '#div100') 
     $('div').bind('touchmove', false); 
    else 
     $('div').bind('touchmove', true); 

}); 

試試這個。