[英]jQuery - Combining multiple element selectors with :not - how
我有一次魔鬼般的時間讓兩個選擇器一起工作,就像我宣布分離時一樣。
我的問題:
當我移至某個元素不包含的任何輸入或錨標記時,我想關閉菜單。 當我為輸入和錨點明確編寫代碼時,我得到了所需的行為-但是,當我嘗試壓縮我的代碼並將它們組合在一起時,它的行為很奇怪,無法按預期工作。
因此,基本上,當用戶焦點位於非選擇器的子項的輸入字段或錨中時,我想關閉菜單。 當我使用兩個單獨的處理程序時,它可以工作。 我想把它們結合起來。
我正在嘗試縮短此時間。
jQuery('#hdr input:not(#opt *)')
.focusin(function(event){
setTimeout(function(){
jQuery("#opt").hide()
},100);
});
jQuery('#hdr a:not(#opt *)')
.focusin(function(event){
setTimeout(function(){
jQuery("#opt").hide();
},100);
});
我已經將所有這些嘗試成一行,但無濟於事:
jQuery('#hdr a input:not(#opt *)')
jQuery('#hdr a, #hdr input:not(#opt *)') <-- I expect this to work, but doesn't.
jQuery('#hdr a,input:not(#opt *)')
jQuery('#hdr *:not(#opt *)')
似乎只有當我執行單個arg時才起作用:#hdr a或#hdr在嘗試合並它們時輸入但沒有運氣。 我搜尋了高低,但沒有運氣。
您可以使用not
方法:
$('#hdr').find('a,input').not('#opt *')
有時,使用方法而不是龐大的選擇器字符串會更好,更易讀。
所有元素都是#opt的子元素,而不是選擇器,請確保#opt是父元素,並且防止其中的所有元素或節點出現事件處理程序。 在Fiddle中像這樣:
@elclanrs方法也有效。
$("#hdr a:not(#opt), #hdr input:not(#opt)")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.