如何在已通过jQuery获取的父节点上应用额外选择条件?
在已获取的jQuery节点内查找元素的方法
嘿,这事儿其实挺简单的,你已经拿到了父节点的jQuery对象objDIV,要在它里面定位符合button:contains("Submit")的元素,有两种常用且高效的写法:
方法一:用find()方法(最推荐)
这是jQuery专门用来在当前元素的后代节点中查找匹配项的方法,直接在你已有的objDIV上调用就行:
let submitBtn = objDIV.find('button:contains("Submit")');
这个方法只会在objDIV的子元素、孙元素等后代范围内查找,比从整个文档根节点开始检索更高效,也能避免误匹配其他区域的元素。
方法二:把已获取节点作为jQuery选择器的上下文
你也可以延续你熟悉的选择器写法,把objDIV作为第二个参数传给jQuery函数,效果和find()完全一致(jQuery内部其实就是通过find()实现这种写法的):
let submitBtn = $('button:contains("Submit")', objDIV);
这种写法更贴近你提到的$("#idofnode button:contains(\"Submit\")")格式,只是把父节点从选择器字符串里抽出来作为上下文参数了。
额外小提示
如果确定这个父节点内只有一个符合条件的按钮,还可以直接拿到对应的原生DOM元素(如果需要的话):
// 获取第一个匹配的jQuery对象 let submitBtnJQ = objDIV.find('button:contains("Submit")').first(); // 直接取索引0拿到原生DOM元素 let submitBtnDOM = objDIV.find('button:contains("Submit")')[0];
内容的提问来源于stack exchange,提问作者SPlatten
相关产品推荐
相关产品推荐

