Javascript 使用JQuery在DOM上迭代
我试图遍历一个DIV列表,检查它们是否有子对象,如果有,将该DIV的ID与子对象的类一起添加到一个数组中。为了一场游戏而保存建筑是一个很好的选择,如果有更好的方法来实现这一点,我愿意接受建议 HTMLJavascript 使用JQuery在DOM上迭代,javascript,jquery,Javascript,Jquery,我试图遍历一个DIV列表,检查它们是否有子对象,如果有,将该DIV的ID与子对象的类一起添加到一个数组中。为了一场游戏而保存建筑是一个很好的选择,如果有更好的方法来实现这一点,我愿意接受建议 HTML 使用。each在每个磁贴上循环,然后使用。在子项上的每个在这些磁贴上循环,可能会有一个更快的算法,如果有,可能会有人评论 saveData.buildings = "[['t2','Extractor']['t8','Forge']]"; $('.tile').each(function(){
使用
。each
在每个磁贴上循环,然后使用。在子项上的每个
在这些磁贴上循环,可能会有一个更快的算法,如果有,可能会有人评论
saveData.buildings = "[['t2','Extractor']['t8','Forge']]";
$('.tile').each(function(){
var parent = $(this);
parent.children().each(function(){
saveData.buildings.push([parent.id,$(this).attr("class")]);
});
});
saveData.resources = 'resources';
使用
。each
在每个磁贴上循环,然后使用。在子项上的每个
在这些磁贴上循环,可能会有一个更快的算法,如果有,可能会有人评论
saveData.buildings = "[['t2','Extractor']['t8','Forge']]";
$('.tile').each(function(){
var parent = $(this);
parent.children().each(function(){
saveData.buildings.push([parent.id,$(this).attr("class")]);
});
});
saveData.resources = 'resources';
我还没有测试过,但是使用这种逻辑的东西应该可以正常工作:
results = [];
// iterate over every element with class 'tile'
$('.tile').each(function() {
var $$ = $(this);
// does this instance of class tile have a child?
if ($$.children().length > 0) {
// store data
var parent = $$.attr('id');
var child = $$.children().first().attr('class');
results.append([parent, child]);
}
});
我还没有测试过,但是使用这种逻辑的东西应该可以正常工作:
results = [];
// iterate over every element with class 'tile'
$('.tile').each(function() {
var $$ = $(this);
// does this instance of class tile have a child?
if ($$.children().length > 0) {
// store data
var parent = $$.attr('id');
var child = $$.children().first().attr('class');
results.append([parent, child]);
}
});
.map()
方法用于构建新数组。这里我们选择子图像,并对该集合使用map
.map()
回调的返回值将成为新数组的成员。因为jQuery的.map()
是。。。古怪的我们需要将返回的数组加倍,因为任何外部数组都会被展平到结果数组中
$('.tile').children("img").map(function(i, el) {
return [[el.parentNode.id, el.className]];
}).toArray();
最后使用
.toArray()
的原因是jQuery中的.map()
的这个版本实际上返回了一个类似数组的jQuery对象,但不是实际的数组。所以我们需要转换它。使用.map()
方法来构建一个新数组。这里我们选择子图像,并对该集合使用map
.map()
回调的返回值将成为新数组的成员。因为jQuery的.map()
是。。。古怪的我们需要将返回的数组加倍,因为任何外部数组都会被展平到结果数组中
$('.tile').children("img").map(function(i, el) {
return [[el.parentNode.id, el.className]];
}).toArray();
最后使用
.toArray()
的原因是jQuery中的.map()
的这个版本实际上返回了一个类似数组的jQuery对象,但不是实际的数组。所以我们需要转换它。.stuff(?)
对你不起作用?这就是我遇到的问题。你真的试过了吗?获取元素及其父元素的id,并将它们放入数组中。或者只使用map:$('.tile').children(“img”).map(函数(i,el){return[[el.parentNode.id,el.className]];})代码>@CrazyTrain谢谢!这就像一个符咒,你能把它贴出来作为答案吗,也许解释一下地图功能是如何工作的?当然。请参见下文。.stuff(?)
对你不起作用?这就是我被绊倒的部分。你真的试过了吗?获取元素及其父元素的id,并将它们放入数组中。或者只使用map:$('.tile').children(“img”).map(函数(i,el){return[[el.parentNode.id,el.className]];})代码>@CrazyTrain谢谢!这就像一个符咒,你能把它贴出来作为答案吗,也许解释一下地图功能是如何工作的?当然。看下面。奇怪的是,每个人都被否决了,但你,我希望你没有否决竞争对手的答案。@Mattytomo,我没有。我刚发了这个。:)奇怪的是,每个人都被否决了,但你,我希望你没有否决竞争对手的答案。@Mattytomo,我没有。我刚发了这个。:)Yeap知道有比我更好的算法:)@PatrickEvans:你的算法也很好。我给你一个+1,因为它确实解决了这个问题。Yeap知道有比我更好的算法:)@PatrickEvans:你的算法也很好。我给你一个+1,因为它确实解决了这个问题。