我有一個DIV包含許多子元素,例如,其他DIV,SPAN和鏈接。「在JQuery中選擇全部,不包括」選擇器
是否有可能在JQuery選擇器中指定,只要點擊此DIV的一個元素(包括DIV本身),除了所有鏈接(a
)之外,我想調用一個函數,而該函數不應該是叫什麼名字?
我有一個DIV包含許多子元素,例如,其他DIV,SPAN和鏈接。「在JQuery中選擇全部,不包括」選擇器
是否有可能在JQuery選擇器中指定,只要點擊此DIV的一個元素(包括DIV本身),除了所有鏈接(a
)之外,我想調用一個函數,而該函數不應該是叫什麼名字?
而是選擇所有,但不包括一些元素,並結合事件處理他們每個人的,更簡單的方法的(IMO)將事件處理程序附加只是爲了div
和測試是否鏈接被點擊或沒有(事件代表團):
$('#yourDiv').click(function(event) {
if(event.target.nodeName !== 'A') {
// do your stuff
}
});
如果鏈接沒有任何其他元素作爲孩子這隻會工作。
更強大可能會使用.delegate
[docs]和:not
[docs]僞選擇:
更新:顯然,你必須到另一個click
事件處理程序添加到div
到能夠檢測的div
點擊費用(我的測試中使用委託選擇只有失敗):
$('#yourDiv')
.delegate(':not(a)', 'click', handler)
.click(function(event) {
if(event.target === this) { // only if the `div` was clicked
handler.apply(this, arguments);
}
});
這裏,handler
是您想要執行的實際事件處理程序。通過使用額外的功能,您不必重複代碼。
您可以使用.not()
方法來排除元素。
您可以使用jQuery not()
方法來實現您正在查找的內容。
例如
$('div, div *').not('a').click(function(){
//handle click
});
交替您可以使用:not()
選擇
例如
$('div, div *:not(a)').click(function(){
//handle click
});
但我個人覺得第一種方法更具可讀性和更漂亮。
這不包括'div'本身。修改了 –
以包含div,我錯過了他的部分問題 – AshHeskes
look http://stackoverflow.com/questions/1730609/using-jquery-not-selector-to-exclude-elements-with-particular-children –