我正在尝试禁用除一个div以外的滚动,这是一个模式弹出窗口。在电话上,它超出了屏幕的底部,因此我只需要该div,我们将为此呼叫#div100

我确定一旦有了这个,只要模式关闭,我就可以解除绑定以重新启用滚动。

除一格外,如何禁用滚动?

的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是否更容易

最佳答案

我建议采用一种略有不同的方法:选择HTML querySelectorAll("*")的每个元素都应执行此操作,然后遍历并在每个元素上绑定“ touchmove”,“ false”。然后,选择#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并不十分熟悉。

关于javascript - 如何选择除一个div以外的整个html,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22703454/

10-09 22:22