You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用jQuery选择除DIV内部之外的所有input元素?

解决方法:选中所有不在DIV内部的input元素

你之前的代码$(':input').filter(':not(#CLASSES).children()')逻辑完全跑偏了,:not(#CLASSES)是排除ID为CLASSES的元素,.children()是取子元素,组合起来根本没法筛选出不在DIV里的input。下面给你两种靠谱的实现方式:

方法一:直接用复合选择器

$(':input:not(div :input)')

这个选择器的逻辑很直接::input匹配所有表单控件(input、textarea、select等),:not(div :input)排除掉那些是DIV后代的控件,剩下的就是完全不在DIV内部的input。

方法二:用filter结合closest检查祖先

$(':input').filter(function() {
  // 向上查找最近的DIV祖先,找不到就保留该元素
  return !$(this).closest('div').length;
});

这种方式性能更优,因为closest('div')找到第一个DIV祖先就会停止查找,不会遍历整个DOM树。如果你的页面DOM结构比较复杂,优先用这个方法。

补充:如果只想排除直接父级是DIV的input

要是你实际需求是“父元素不是DIV”(允许祖先里有DIV),可以改成这样:

$(':input').filter(function() {
  return !$(this).parent().is('div');
});

内容的提问来源于stack exchange,提问作者user2799077

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 14:45:40