javascript - jQuery - 结合多个元素选择器与 :not - how

标签 javascript jquery

让两个选择器一起工作以及当我声明分开时做的事情让我很痛苦。

我的问题:

当我移动到某个元素未包含的任何 输入或 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/

相关文章:

javascript - 为什么我得到 "Invalid assignment on left-hand side"?

Javascript regExp 输入验证

javascript - 一个对象包含一个对象集合 - 每个对象都有一个 id 和名称,我如何将它们分开?

Jquery DateTimePicker 不使用 CSS 显示

javascript - 如何在 jQuery 中向 `change` 事件添加属性

javascript - ReactJS 组件在视口(viewport)中时淡入

javascript - 如何显示链接到 MySQL 数据库的折线图?

jQuery 切换点击

javascript - Skrollr transform函数导致文本抖动

javascript - 在 Derby.js 中包含 JS 文件