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 に答える