提问人:Chezsky Noname 提问时间:9/5/2022 最后编辑:Chezsky Noname 更新时间:9/5/2022 访问量:139
Jquery XML 找到属性等于特定值的地方?
Jquery XML find where attribute equals a specific value?
问:
我有一个 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”的警报中提取属性值?
答:
0赞
Rory McCrossan
9/5/2022
#1
您可以使用属性选择器按属性查找:template
name
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”);
评论