2014-03-28 42 views
0

HTMLjQuery的排除DIV 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

這個問題問得好。請看帖子。謝謝 – guest271314

回答

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 
    } 
}); 
+0

我認爲你正在嘗試做一個函數,如果它不是'#div1',函數已經存在,我只是試圖從該函數中排除'#div1' – user3427494

0

你可以做象下面這樣:

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

可能不起作用,因爲[touchmove]( https://developer.mozilla.org/en-US/docs/Web/Reference/Events/touchmove)像點擊事件的泡沫 - http://jsfiddle.net/arunpjohny/Zpr9a/1/ –

0

您需要首先選擇HTML的孩子,身體纔可以用。不能()過濾器:

$('html, body').children().not($('#div1')) 
0

嘗試

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

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

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

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