gpt4 book ai didi

html - 遍历 JSON 数据未按预期工作

转载 作者:太空宇宙 更新时间:2023-11-04 15:17:43 25 4
gpt4 key购买 nike

我有以下脚本,它的行为方式与我期望的不同:

success: function( widget_shell ) 
{
if( widget_shell.d[0] ) {
for ( i = 0; i <= widget_shell.d.length - 1; i++ ) {
$( ".column_" + widget_shell.d[i].column_id ).append( "<div class='widget_" + widget_shell.d[i].widget_id + "'>" );
$( ".widget_" + widget_shell.d[i].widget_id ).append( "<div class='widget_content_" + widget_shell.d[i].widget_id + "'>" );
$( ".widget_" + widget_shell.d[i].widget_id ).append( "</div>" );
$( ".column_" + widget_shell.d[i].column_id ).append( "</div>" );
}
}

这会产生这样的 HTML:

<div id="divMain">
<div class="column_1 ui-sortable">
<div class="widget_9">
<div class="widget_content_9"></div>
<div class="widget_content_9"></div>
</div>
</div>
<div class="column_2 ui-sortable">
<div class="widget_9">
<div class="widget_content_9"></div>
</div>
</div>
<div class="column_3 ui-sortable">
<div class="widget_58">
<div class="widget_content_58"></div>
</div>
</div>
</div>

当 JSON 数据看起来像这样时:

{
"d": [
{
"__type": "Widget_Shell",
"column_id": 1,
"widget_id": 9
},
{
"__type": "Widget_Shell",
"column_id": 2,
"widget_id": 9
},
{
"__type": "Widget_Shell",
"column_id": 3,
"widget_id": 58
}
]
}

所以基本上,我应该根据 JSON 数据在每列中只看到 1 个小部件,这很好,但是由于某种原因,我最终在第一列小部件中得到了 2 个内容...

知道为什么吗?

最佳答案

jQuery 函数在使用 $("...") 选择元素时搜索整个文档.在您的情况下,在第二次迭代中有两个 .widget_9元素,每个元素都得到一个 <div>附上。

你想要的只是附加到刚刚创建的元素,这可以用 .appendTo 完成。 :

var $widget = $("<div class='widget_" + widget_shell.d[i].widget_id + "'>")
.appendTo(".column_" + widget_shell.d[i].column_id);

$("<div class='widget_content_" + widget_shell.d[i].widget_id + "'>")
.appendTo($widget);

$widget每次迭代都会被一个新元素覆盖,因此您不会弄乱上一次迭代的元素。

请注意 jQuery 知道如何使用 $("<div>") 创建元素, 所以不需要结束标签。您还应该声明 ivar i .

关于html - 遍历 JSON 数据未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13251983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com