簡體   English   中英

jQuery-將多個元素選擇器與:not結合在一起

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM