我正在尝试使用each()函数,每次类出现在表中时,它都会获取该部分中的信息。
它正在进行循环x3,但我要求的信息只是来自第一个实例。
<td class="approved_player">
<span first_role="1" role="Damage" class="icon_damage"></span>
<a class="class_monk">Sickli</a>
</td>
在读取信息后,它会更新json数组1是否损坏。
var classes = {
classes: [{
"mage": 0
}, {
"warlock": 0
}, {
"rogue": 0
}, {
"paladin": 0
}, {
"deathknight": 0,
"deathknight damage": 0
}, {
"monk": 0,
"monk damage": 0
}, {
"priest": 0,
"priest damage": 0
}, {
"druid": 0,
"druid damage": 0
}, {
"shaman": 0,
"shaman damage": 0
}]
};
$("td.approved_player").each(function (i, obj) {
var player = $("a[class^='accountLink class_']").attr('class').split('_')[1];
var role = $("span[first_role='1']").attr('role').toLowerCase();
$.each(classes, function (key, data) {
$.each(data, function (index, data) {
if (player == data) {
if (role == 'damage') {
data[1] = 1;
} else {
data[0] = 1;
}
}
});
});
$("div#output").append(i + ' appoved class ' + player + ' role ' + role + '<br/>');
});
$.each(classes, function (key, data) {
$.each(data, function (index, data) {
console.log('index', data);
});
});
我在这里工作:http://jsfiddle.net/EXwsy/1/
感谢您的帮助。
答案 0 :(得分:1)
我发现了一个错误
在这里,您要将数据对象与播放器的字符串进行比较
if (player == data)
我将其更改为:
if (Object.keys(data)[0] == player)
通过这种方式,你可以将“和尚”与你对象的第一个属性进行比较,在这种情况下是法师。
此外,这将检索3个元素
$("td.approved_player")
但是在你的每个循环中你得到一个像这样的元素,但它将检索3个元素
$("a[class^='accountLink class_']")
这也会检索3个元素,你总是在第一个元素上工作。
使用此功能,您将检索当前元素。
$(this).children("a").attr('class').split('_')[1]
我认为Here是工作小提琴。
请记住,jQuery可以从所需的选择器中检索多个DOM对象。