jQuery从html和body选择器中排除div

时间:2014-03-28 01:32:44

标签: javascript jquery html css

HTML

<html>
  <body>
    <div id="container">
        <div id="div1">...</div>
        <div id="div2">...</div>
        <div id="div3">...</div>
    </div>
    <div id="other-div">...</div>
  </body>
</html>

JS

jQuery('html, body').on('touchstart touchmove', function(e){ 
       e.preventDefault(); 
});

如何从#div1选择器中排除('html, body')及其所有内容/子项?

我试过

jQuery('html, body :not(#div1)')

以及

jQuery('html, body').not( document.getElementById( "#div1" ) )

谢谢!

5 个答案:

答案 0 :(得分:0)

jQuery('html, body').on('touchstart touchmove', function(e){ 
   e.preventDefault();
   var $target = $(e.target);
   var id = $target.attr('id');
   if(id != 'div1') {
     // not div 1
   }
});

答案 1 :(得分:0)

你可以这样做:

$('body').on('touchstart touchmove', ':not(#div1)', function(e) {
  e.preventDefault();
});

答案 2 :(得分:0)

您需要首先选择html,body的子项,然后才能使用.not():

进行过滤
$('html, body').children().not($('#div1'))

答案 3 :(得分:0)

尝试

$('body').on('touchstart touchmove', function (e) {
    if ($(e.target).closest('#div1').length == 0) {
        e.preventDefault();
    }
});

答案 4 :(得分:0)

您可以使用 e.stopPropagation() 来阻止事件冒泡DOM树:

jQuery('html, body').on('touchstart touchmove', function(e){ 
       e.preventDefault(); 
});

jQuery('#div1').on('touchstart touchmove', function(e){ 
       e.stopPropagation(); 
});