0

返されたものに基づいてリストを作成するajax呼び出しがあります:

$.ajax({
    type: "POST",
    url: "Home/FillTags",
    data: "{ 'mydataishere' }",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (msg) {
     $('.placetags').html('');
     $('.placetags').append("<div class=\"tags\">");
        var i = 0;           
        $.each(msg, function () {
            $('.placetags').append("<li><a href='javascript:void(0)' onclick=\"fnKeyWordSearch({'type' : '2' , 'tag' : '" + msg[i].TagID + "'});\"> " + msg[i].Tag + "</a></li>");
            i++;
        });
     $('.placetags').append("</div>");
    }
});

ajaxは適切なリストを返しています。これはレンダリングされたHTMLとして表示したいものです:

<div class="placetags">
  <div class="tags">
    <li>...</li>
    <li>...</li>
    <li>...</li>
  </div>
</div>

しかし...これは私が得ているものです...

<div class="placetags">
  <div class="tags"></div>
    <li>...</li>
    <li>...</li>
    <li>...</li>    
</div>

.tagsが挿入される前にdivが閉じられている理由がわかりません<li>。私のcssは、<li>の中にあるスタイルを期待して書かれていますが.tags 、なぜこれが起こっているのかわかりません。

4

3 に答える 3

1

不適切なネスト、これを試してください:

$('.placetags').append("<div class=\"tags\">");
    var i = 0;           
    $.each(msg, function () {
        $('.tags').append("<li><a href='javascript:void(0)' onclick=\"fnKeyWordSearch({'type' : '2' , 'tag' : '" + msg[i].TagID + "'});\"> " + msg[i].Tag + "</a></li>");
        i++;
    });
于 2012-12-05T19:05:17.360 に答える
0

作成したdivに追加する必要があります。コンテナdivではありません。

$('.placetags').append("<div class=\"tags\" />"); // <-- make sure you close or it breaks in IE
        var i = 0;           
        $.each(msg, function () {
            $('.placetags div.tags').append("<li><a href='javascript:void(0)' onclick=\"fnKeyWordSearch({'type' : '2' , 'tag' : '" + msg[i].TagID + "'});\"> " + msg[i].Tag + "</a></li>");
            i++;
        });
于 2012-12-05T19:02:21.867 に答える
0

これは、.append()を呼び出すたびにコンテンツと終了タグを含む完全なHTML要素が追加されるためです。

これを回避したい場合は、最初に追加する完全なHTMLを作成し、HTMLが完成したときにのみ.append()を使用する必要があります。

于 2012-12-05T18:59:13.963 に答える