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" ) )
谢谢!
答案 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();
});