使用jQuery通过子元素的值选择父元素

3
如果我有以下XML代码:
<Books>
    <Book>
        <Name>Test</Name>
        ...
    </Book>
    <Book>
        <Name>Another one</Name>
        ...
    </Book>
</Books>

我该如何使用jQuery选取其子元素name值等于"test"的Book元素?
4个回答

9
var book = $xml.find( 'Name' ).filter(function () {
    return $( this ).text() === 'Test';
}).parent();

假设您通过Ajax加载XML文档,其中$xml是代表XML文档的jQuery对象。这种情况下,您可以使用以下方式构建这样的jQuery对象:

var $xml = $( data );

这里的 data 是 Ajax 响应的数据。


假设在第一个书籍元素内,如果我有两个具有不同值的名称元素,那么我该如何找到它们。 - Atul Dhanuka
@AtulDhanuka 一本书为什么会有两个名字? - Šime Vidas

4
$("Books Book Name:Contains('Test')");

请注意,包含函数是区分大小写的,因此您需要使用以下行更新jQuery代码: return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0; };``` - Samir Adel
这将使搜索不区分大小写。 - Samir Adel
这不会匹配 Name 元素吗?OP 想要匹配包含指定名称的 Book 元素。或者我搞错了吗? - Mark Meuer

4

这不会匹配 Name 元素吗?OP 想要匹配包含指定名称的 Book 元素。或者我搞错了? - Mark Meuer

0
为了避免选择 Name 元素,请使用 .has() 过滤函数,如下所示:
$('Books Book').has('Name:contains("Test")')

这将返回名称为“Test”的Book项目。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接