1

我在我的应用程序中使用 JSON、Ajax 和 jQuery。在我的 html 中,我有以下标签:

<div id="tab"></div>

Ajax 脚本如下(简化,仅显示必要的代码):

function checkVal() {
    if (AJAX.readyState == 4 && AJAX.status == 200) {
        var json = JSON.parse(AJAX.responseText);
        var item = json.Item;
        txt = "<div#tab>";

        for (i = 0; i < item.length; i++) {
            txt = txt + "<h3>" + item[i].ItemId + "</h3>";
            txt = txt + "<p>" + item[i].ItemName;
            txt = txt + "<br>" + item[i].Price + "</p>";
        }
        jQuery('div#tab').html(txt + "</div>");
    }
}

jQuery代码如下:

jQuery('div#tab').accordion({collapsible:true});

我发现手风琴不起作用,即使数据显示正确。我还发现jQuery('div#tab').draggable()虽然手风琴失败了,但它仍然有效。

有人可以解释这种奇怪的行为吗?还是我做错了什么?

4

2 回答 2

1

我认为就您发布的内容而言,您的 for 循环存在问题,不应该是这样的:

var txt = "";
for(i=0;i<item.length;i++) {
    txt+="<h3>"+item[i].ItemId+"</h3>";
    txt+= "<div><p>" +item[i].ItemName;
    txt+= "<br>" +item[i].Price+ "</p></div>";
}
jQuery('div#tab').html(txt);
于 2012-06-13T07:57:36.087 回答
0

jQuery('div#tab').html(txt);循环中,您每次都会覆盖 div。你应该在循环之后做

根据您的编辑:

txt=""
    for{...}
$('#tab').html(txt)

因此,当 html 代码中已经存在时,从 txt 中删除“div”标签

于 2012-06-13T08:07:14.623 回答