jQuery从自身或父级对象出发查找.input-wrapper下input元素的优化方案
优化方案
你提到的.addBack()完全可以满足你的需求,优化后的代码如下:
function getInputs($obj) { return $obj.find(".input-wrapper") .addBack(".input-wrapper") .find(":input"); }
逻辑说明
- 先调用
$obj.find(".input-wrapper")获取传入元素所有后代中的.input-wrapper节点 - 接着调用
addBack(".input-wrapper"):该方法会把原始的$obj也加入当前元素集合,同时通过传入的选择器做过滤,只有当$obj本身符合.input-wrapper类名条件时才会被加入,刚好覆盖你说的两种传入场景 - 最后统一对所有匹配到的
.input-wrapper节点查找子输入元素,和你原有逻辑完全一致
额外说明
如果你要求的是仅获取.input-wrapper的直接子级输入元素,可以把最后的find(":input")替换为children(":input"),精度更高。
内容的提问来源于stack exchange,提问作者John Ohara
相关产品推荐
相关产品推荐

