我试图禁用滚动除了一个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
而不是body
或html
会更容易,但我不介意使用{{1}更容易做到这一点}或body
答案 0 :(得分:0)
我建议采用略有不同的方法:选择HTML querySelectorAll("*")
的每个元素都应该这样做,然后循环并绑定&#34; touchmove&#34; &#34;假&#34;在每一个。然后,选择#div100,并在那里取消绑定。
您可能需要精确调整您应用的元素&#34; querySelectorAll,&#34;作为绑定到#div100的东西,祖先可能传播到#div100。所以,document.querySelectorAll
可能不是最好的地方,而是#div100的parentNode,所以只有#div100的兄弟姐妹才能获得这个约束。当然,使用jquery,您可以使用您想要的任何方法选择元素。我只是引用querySelectorAll作为我在vanilla中经常使用的东西。
编辑:
尝试这样的事情:
$("container").each(function(){
$(this).bind('touchmove', false);
}
$("#div100").bind('touchmove', true);
或者,您可以这样做:
$("container").each(function(){
if ($(this)!=$("#div100")){
$(this).bind('touchmove', false);
}
}
无论哪种方式都应该有效。请原谅我的语法,我对jquery并不十分熟悉。
答案 1 :(得分:0)
$('.button').bind("click touchend", function(){
if($('div').attr("id") == '#div100')
$('div').bind('touchmove', false);
else
$('div').bind('touchmove', true);
});
试试这个。