让两个选择器一起工作以及当我声明分开时做的事情让我很痛苦。
我的问题:
当我移动到某个元素未包含的任何 输入或 anchor 标记时,我想关闭菜单。当我为输入和 anchor 明确编码时,我得到了我需要的行为 - 但是当我尝试压缩我的代码并将它们组合时,它表现得很奇怪并且没有按预期工作。
所以,基本上当用户焦点位于输入字段或不是我的选择器子项的 anchor 时,我想关闭菜单。当我使用两个单独的处理程序时,它会起作用。我想把它们结合起来。
我正在尝试缩短这个....
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 input 但是当我尝试将它们组合时,运气不好。我搜索了高低但没有运气。
最佳答案
可以使用not
方法:
$('#hdr').find('a,input').not('#opt *')
有时使用方法而不是巨大的选择器字符串会更好、更易读。
关于javascript - jQuery - 结合多个元素选择器与 :not - how,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14545721/