Ajaxで取得したデータをul要素を使ってリスト表示したいがうまくいかない場合

Ajaxで複数のデータを取得して、画面上にリスト形式で表示する方法について2通り解説します。

データを「AddList」というdiv要素に追加するには

jQuery("div#AddList").append(追加したいHTML);

で可能です。

HTMLでリストを表現するには

<ul>
    <li>データ1</li>
    <li>データ2</li>
    <li>データ3</li>
    <li>データ4</li>
</ul>

のように記述します。

うまくいかないパターン

以下のように記述してもうまくいきません。

jQuery("div#AddList").append("<ul>");

for(i = 0; i < datalist.length; i++){

    jQuery("div#AddList").append("<li>" + datalist[i] + "</li>");

}

jQuery("div#AddList").append("</ul>");

こうするとHTML上は以下のようになってしまい、リストとして機能しません。

<ul></ul>
<li>データ1</li>
<li>データ2</li>
<li>データ3</li>
<li>データ4</li>

解決方法①

1つ目の解決方法は、まずul要素を生成してからそこにli要素を追加する方法です。

jQuery("div#AddList").append("<ul id='Target'></ul>");

for(i = 0; i < datalist.length; i++){

    jQuery("ul#Target").append("<li>" + datalist[i] + "</li>");

}

ul要素にidを指定して、そのul要素に向けてリストを追加するようにしています。

解決方法②

2つ目の解決方法は、HTMLを文字列で組み立てて一気に追加する方法です。

var sHTML = "";
sHTML += "<ul>";
for(i = 0; i < datalist.length; i++){

    sHTML += "<li>" + datalist[i] + "</li>";

}
sHTML += "</ul>";

jQuery("div#AddList").append(sHTML);

<ul><li>~</li></ul>までのHTMLを文字列として最初に組み立ててしまいます。
その後でdiv要素に対して組み立てたHTMLを追加します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です