对于一个项目,我将数据存储在XML中,如下所示:
<xml>
<sprites>
<sprite>
<name>Tile1</name>
<lat>1</lat>
<lng>2</lng>
</sprite>
<sprite>
<name>Tile2</name>
<lat>3</lat>
<lng>4</lng>
</sprite>
</sprites>
<xml>
通过jQuery,我想获取一个与两个子值lat和lng值匹配的tile对象。
I found this post很有帮助,但可悲的是,它只有一个示例,说明如何搜索一个匹配值。这是我到目前为止的代码:
// xml stored in 'xml' var
var findLat = 3;
var findLng = 4;
var mapSprites = $(xml).find("sprites");
var getSprite = $(mapSprites).find("sprite").filter(
function() {
return $(this).find('lat').text() == findLat;
},
function() {
return $(this).find('lng').text() == findLng;
}
);
可悲的getSprite
是未定义的,因为我想您无法使用过滤器函数,因为我尝试使用它?我链接到的示例具有一个过滤器功能,并且似乎可以工作,但是逗号分隔似乎不能作为AND
来工作,这正是我所需要的。
目标是能够为函数提供lat和lng值,而我能够提取<name>
值。
要感谢朝着正确方向发展,我对XML并通过jQuery解析它还很陌生。
答案 0 :(得分:2)
filter不接受多个参数。因此,请使用“和”将其合并为一个。
var findLat = 3;
var findLng = 4;
var mapSprites = $(xml).find("sprites");
var getSprite = mapSprites.find("sprite").filter(
function() {
const node = $(this);
return Number(node.find('lat').text()) === findLat &&
Number(node.find('lng').text()) === findLng;
}
);