给出了元素:
<link arbitrary="arbitrary">1st link</link>
...
<link>the link I want</link>
...
用于选择“我想要的链接”的querySelector()选择器是什么? 在“我想要的链接”之前或之后可能存在任意数量的具有任意属性的链接,这是唯一没有任何属性的元素。我不想循环遍历querySelectAll()列表。
[更新] querySelector不需要HTML元素,只需要普通的旧节点。 我正在处理从ATOM提要加载的XML DOM:
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xmlSrc, "text/xml");
var xmlElem = xmlDoc.documentElement;
// fragment:
<feed>
<entry>
<link rel='replies' type='application/atom+xml' href='..' title='...'/>
<link rel='replies' type='text/html' href='...' title='...'/>
<link>the link I want</link>
<link rel='self' type='application/atom+xml' href='...'/>
<link rel='alternate' type='text/html' href='...' title='...'/>
</entry>
<feed>
答案 0 :(得分:0)
没有一个。
querySelector()方法返回与文档中指定的CSS选择器匹配的第一个元素。
因为没有任何关于该链接的具体内容,所以没有任何方法可以在重复链接的海洋中在DOM上引用它。
答案 1 :(得分:0)
您可以filter
选择,在链接节点上查找空的attributes
属性:
e.g。
var match = $xmlDOM.find('feed link').filter(function () {
return this.attributes.length === 0; // or !this.attributes.length
});
由于这也是关于jQuery XML解析的,你真的需要提供一个工作示例来测试这类问题。
由于您特别需要一个查找具有/不具有属性的元素的选择器,您始终可以使用自定义伪选择器(如:hasattr
e.g。
jQuery.extend(jQuery.expr[':'], {
hasattr: function (el, index, selector){
return el.attributes.length > 0;
}
});
并与.find('link:not(:hasattr)')