使用jQuery获取元素根的所有元素和属性

时间:2014-05-22 23:38:27

标签: javascript jquery circuit

我需要通过使用JQuery找到标签中的所有元素名称和每个元素中的所有属性,每个元素都有不同的属性名称和值我需要知道这个属性名称和值但不知道如何

    <Circuit>
<C Type="Bipolar" Name="c1">
        <Cathode row="10" col="20"/>
        <Anode row="15" col="50"/>

    </C>
    <AND Name="and1">``
        <Input>
            <Pin row="10" col="40"></Pin>
            <Pin row="20" col="40"></Pin>
        </Input>
        <Output>
            <Pin row="30" col="50"></Pin>
        </Output>
    </AND>

    <Diode Name="d1" Value="30">
        <Anode row="30" col="50"></Anode>
        <Cathode row="40" col="60"></Cathode>
    </Diode>

<R Type="Constant" Name="r1">
    <Node row="60" col="80"></Node>
    <Node row="70" col="80"></Node>
</R>    
</Circuit>

我将解释我需要的东西,首先需要知道标签中的所有元素(标签名称) 这样的o / p 电路标签中的元素 C 和 二极管 R

之后需要知道每个元素中的所有属性和元素 像这样

第一个元素(C)有2个属性 第一个属性是&#34; Type&#34;以及该属性的值=&#34; Bipolar&#34; 第二个属性是&#34;名称&#34;以及该属性的值=&#34; c1&#34;  并有2个元素 阴极 阳极

并且每个元素都相同

2 个答案:

答案 0 :(得分:0)

在jQuery中,存在属性matcher [attr],其他许多selectors

$("[Name]")

将为您提供具有名称

属性的所有元素

然后您可以使用jQuerys attr()函数

循环并获取实际名称
$("[Name]").each(function() {
    console.log($(this).attr("Name"));
    console.log($(this).attr("Value"));
});

修改

在评论中我发现问题实际上是如何将整个结构序列化为数据集。因此,这可能是重复的https://stackoverflow.com/a/5287305/576725

答案 1 :(得分:0)

以下的先前问题显示了如何使用JavaScript获取元素的所有属性。相同,可以使用jQuery获取元素:

Get all Attributes from a HTML element with Javascript/jQuery

这样您的代码就可以跨浏览器定义您的xml变量,如下所示:

var xml = $( $.parseXML( 'XML-String' ) );

您可以按如下方式获取所有元素和属性:

var all = xml.find('*').map(function(v,i) {
    var ux = {};
    $.each( this.attributes, function(index, node) {
         ux[ node.nodeName ] = node.nodeValue;
    });
    return $.extend({}, { nodeName: this.nodeName }, {attributes:ux});
})
.get();

哪个应该为您提供如下输出:

[{"nodeName":"Circuit","attributes":{}},{"nodeName":"C","attributes":{"Type":"Bipolar","Name":"c1"}},{"nodeName":"Cathode","attributes":{"row":"10","col":"20"}}, ....... .. .. .. ]

JS FIDDLE DEMO