如何选择除一个div之外的整个html

时间:2014-03-28 03:09:42

标签: javascript jquery html css

我试图禁用滚动除了一个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会更容易,但我不介意使用{{1}更容易做到这一点}或body

2 个答案:

答案 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);

});

试试这个。