Jquery 基于另一个元素属性选择元素

Jquery 基于另一个元素属性选择元素,jquery,ajax,xml,Jquery,Ajax,Xml,我有一个以下格式的XML文档: <CollectionMappingData> <ContentTypes> <ContentType ContentTypeName="Content Type Name" SomeAttr="ValueINeed" /> </ContentTypes> <CollectionGroup CollectionName="collection_name" ContentTypeName="C

我有一个以下格式的XML文档:

<CollectionMappingData>
  <ContentTypes>
    <ContentType ContentTypeName="Content Type Name" SomeAttr="ValueINeed" />
  </ContentTypes>
  <CollectionGroup CollectionName="collection_name" ContentTypeName="Content Type Name"/>
  <CollectionGroup CollectionName="collection_name2" ContentTypeName="Content Type Name 2"/>
  <CollectionGroup CollectionName="collection_name3" ContentTypeName="Content Type Name 3"/>
</CollectionMappingData>

它似乎没有像我预期的那样找到,即使它确实存在于XML中。我想我在这里遗漏了一些关于语言工作原理的基本知识。

我对语法不是100%确定,目前我无法测试它,但您可能正在寻找类似的东西:

findCollectionGroup函数:

function findCollectionGroup(xml, collectionName) {
        var output = '';
        var xmlDoc = $.parseXML( xml );
        $xml = $(xmlDoc);
        $cg = $xml.find("CollectionGroup").attr("CollectionName",collectionName);
        $ct = $xml.find("ContentType").attr("ContentTypeName").each(function() {
            if($(this) == $cg)
                $("#xmlDump").append($(this));
        })
 }

结果证明罗恩·托纳姆是对的。这是我的双引号。我只是从来没有让他们正确匹配,这似乎是我所有问题的根源。这修正了它:

var contentType = $(xml).find('ContentType[ContentTypeName="' + $(collectionGroup).attr("ContentTypeName") + '"]') 

谢谢

contentType赋值的末尾有两个双引号:+']'很好。不幸的是,同样的结果。结果证明罗恩·托纳姆是对的。这是我的双引号。我只是从来没有让他们正确匹配,这似乎是我所有问题的根源。这修复了它:var contentType=$xml.find'contentType[ContentTypeName='+$collectionGroup.attrContentTypeName+']'谢谢!
var contentType = $(xml).find('ContentType[ContentTypeName="' + $(collectionGroup).attr("ContentTypeName") + '"]')