Jquery each()类,只获取该循环中的元素

时间:2014-03-07 22:12:02

标签: javascript jquery json

我正在尝试使用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/

感谢您的帮助。

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对象。