1

xml ファイルをテーブル形式に解析しようとすると、jQuery は開始<tr>タグを閉じ続けます。これに対する回避策はありますか?

<script type="text/javascript">
    $(document).ready(function(){
    $.ajax({
            type: "GET",
            url: "sample-data.xml",
            dataType: "xml",
            success: parseXml
        });
    }); 

    function parseXml(xml)
    {
      $(xml).find("user").each(function()
      {  
        var id = "#sortable";  
            $(id).append("<tr>");
            $(id).append("<td>" + $(this).find("name").text() + "</td>");
            $(id).append("</tr>");

      });
    }
</script>

<table id="table" class="tablesorter">
    <thead>
      <tr>
        <th>test</th>
      </tr>
    </thead>
    <tbody id="sortable">

    </tbody>
</table>

これは、マークアップが出力されている方法です。

 <tr></tr>
 <td>data</td>
4

4 に答える 4

3

複数の追加ではなく、1 つの追加を呼び出すだけです。

この部分を変更します。

        $(id).append("<tr>");
        $(id).append("<td>" + $(this).find("name").text() + "</td>");
        $(id).append("</tr>");

これに:

        $(id).append("<tr><td>" + $(this).find("name").text() + "</td></tr>");
于 2011-02-11T03:03:22.873 に答える
2

ループで追加を使用しないことをお勧めします。代わりに、ループの外に出力してください。

var id = $("#sortable");
var html = '';

  $(xml).find("user").each(function()
  {  

    html += '<tr>';
      html += '<td>';
          html += $(this).find("name").text( );
      html += '</td>';
    html += '</tr>';   
  });

  id.append(html);

$(this) をループ内で何度も使用する場合 (年齢、性別など)、$(this) を何度も呼び出すのではなく、変数を $(this) に割り当てることをお勧めします。

PS私はそのコードをテストしませんでした。何かを提案したいだけです...しかし、うまくいくことを願っています。乾杯^^

于 2011-02-11T03:35:55.737 に答える
1

ここではjQueryが原因ではないと思います。

あなたが電話するときappend("<tr>")、あなたはそれが何をしたいですか?回答:仕様に従ってDOMを変更する必要があります。ただし、DOMはデータ構造であり、文字列ではありません。「閉じられていない」要素をDOMに追加することはできないため、すべての要素は、追加された時点で本質的に閉じられています。

その結果、後続はTD要素の内部ではなくappend("<td>...</td>")にTD要素を追加します。さらに、の処理を考えると無意味であるため、の試みは単に無視されます。<tr>append("</tr>")append("<tr>")

于 2012-07-15T04:47:19.730 に答える
1

ええ、jQuery は実際には機能しません。これを試して:

function parseXml(xml)
{
  $(xml).find("user").each(function()
  {  
    var id = "#sortable";  
        $(id).append('<tr></tr>');
        $(id).find('tr:last').html("<td>" + $(this).find("name").text() + "</td>");

  });
}
于 2011-02-11T03:00:25.790 に答える