jQuery手风琴在Ajax中失败了

时间:2012-06-13 07:51:43

标签: jquery ajax json accordion

我在我的应用程序中使用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()虽然手风琴失败了但仍有效。

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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

根据你的编辑:

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

所以删除txt中的“div”-tag,如果已存在于html-code