Jquery XML 找到属性等于特定值的地方?

Jquery XML find where attribute equals a specific value?

提问人:Chezsky Noname 提问时间:9/5/2022 最后编辑:Chezsky Noname 更新时间:9/5/2022 访问量:139

问:

我有一个 Jquery 网站,它从结构如下的 XML 源中提取并显示特定值

<alerts>
<alert type="FIRE" status="CLEAR" id="xxxxxx" client_id="xxxxxx" grouping="xxxxxx">
    <alert_location name="xxxxxx"/>
    <template name="FIRE_CLEAR"/>
</alert>
    <alert type="LIGHTNING" status="CLEAR" id="xxxxxx" client_id="xxxxxx" grouping="xxxxxx">
    <alert_location name="xxxxxx"/>
    <template name="LIGHTNING_CLEAR"/>
</alert>

它通过使用以下方法收集 jquery 中 “LIGHTNING_CLEAR” 的 Lightning 模板名称值:

var lightXML = $(xml).find('template').eq(1).attr("name");

这工作正常,直到 xml 提供程序删除冬季的火灾警报,然后我必须每 6 个月编辑一次代码才能使用

var lightXML = $(xml).find('template').eq(0).attr("name");

我已经搜索了一些答案,但没有运气,但是是否可以使用find来确保它始终从type=“LIGHTNING”的警报中提取属性值?

JavaScript HTML jQuery XML 查找

评论


答:

0赞 Rory McCrossan 9/5/2022 #1

您可以使用属性选择器按属性查找:templatename

var lightXML = $(xml).find('template[name="LIGHTNING_CLEAR"]').attr("name");

使用插值变量也是如此:

var templateName = 'FIRE_CLEAR'; // or 'LIGHTNING_CLEAR'
var lightXML = $(xml).find(`template[name="${templateName}"]`).attr("name");

评论

1赞 Chezsky Noname 9/5/2022
谢谢,我接受了这个答案,但忘了在我的原始帖子中提到LIGHTNING_CLEAR是动态的和变化的,我调整了你的答案以满足我的需要。var lightXML = $(xml).find('alert[type=“LIGHTNING”]').find('template').attr(“name”);