1

我有一个问题要问那些 jquery/ajax/javascript 的老手,我正在为某个游戏创建一个技能计算器……在这之前一切都很好:

这是ajax输出:

{"skills":{"skill_id_1":"skill_name_1","skill_id_2":"skill_name_2"}}

这是我的ajax:

function setOutput(){
    if(httpObject.readyState == 4){
    var results = eval('('+httpObject.responseText+')');
    if (results['skills']){
    $('#skilldiv').empty(); // empty div
    $.each(results['skills'], function(key, value)
    {
        $("<div></div>").appendTo("#skilldiv").attr({class: "skilldesc"});
        $("<div>&nbsp;</div>").appendTo(".skilldesc").attr({class: "skillinfo"});
        $("<div>&nbsp;</div>").appendTo(".skilldesc").attr({class: "skilltxt"});
    });
    }
    }
}

这是我的 div:

<div id="wrapper">
    <ul>
        <li id="skilldiv"></li>
    </ul>
</div

所以我的问题是..我怎样才能将技能信息和技能txt附加到刚刚附加到skilldiv的skilldesc ......

我试过这个:

$.each(results['skills'], function(key, value)
{
    $("<div></div>").appendTo("#skilldiv").attr({class: "skilldesc"});
    $("<div>&nbsp;</div>").appendTo(".skilldesc").attr({class: "skillinfo"});
    $("<div>&nbsp;</div>").appendTo(".skilldesc").attr({class: "skilltxt"});
});

但所有结果都进入第一个技能描述,

我试图得到这些:

<div id="wrapper">
    <ul>
        <li id="skilldiv">
            <div class="skilldesc">
                <div class="skillinfo">Some Info of skill 1 here</div>
                <div class="skilltxt">Name of skill 1 here</div>
            </div>
            <div class="skilldesc">
                <div class="skillinfo">Some Info of skill 2 here</div>
                <div class="skilltxt">Name of skill 2 here</div>
            </div>
        </li>
    </ul>
</div>

但我得到了这个;

<div id="wrapper">
    <ul>
        <li id="skilldiv">
            <div class="skilldesc">
                <div class="skillinfo">Some Info of skill 1 here</div>
                <div class="skilltxt">Name of skill 1 here</div>
                <div class="skillinfo">Some Info of skill 2 here</div>
                <div class="skilltxt">Name of skill 2 here</div>
            </div>
            <div class="skilldesc"></div>
        </li>
    </ul>
</div>

任何帮助将不胜感激。. . 谢谢

4

1 回答 1

2

因为.skilldesc也选择了第一个div。

你可以试试这个

$.each(results['skills'], function(key, value)
{
    $skilldesc = $("<div></div>").attr({class: "skilldesc"});
    $("<div>&nbsp;</div>").appendTo($skilldesc).attr({class: "skillinfo"});
    $("<div>&nbsp;</div>").appendTo($skilldesc).attr({class: "skilltxt"});
    $skilldiv.appendTo("#skilldiv");

});

此外,您应该对内存中的对象进行操作(而不是在 dom 中)。

于 2012-04-18T05:03:57.590 回答