1

私は次のコードを持っています:

$.getJSON('/api/video/',
      function (resp) {
          $("body").append("<ul/>");

          $.each(resp, function (key, value) {
              $("ul").append("<li/>").append(
                  $("<a/>", {
                      href: value.url,
                      html: value.title
                  }));
          });
      });

それは以下を生成します:

...
<ul>
    <li></li>
    <a href="http://vimeo.com/1234567">How to Connect a Mobile Broadband Antenna to Data Card</a>
    <li></li>
    <a href="http://www.youtube.com/watch?v=q4Oknc8onG8">40000mW Laser vs. Line of Balloons!!</a>
</ul>
...

ご覧の<a/>とおり、は内部にありません<li/>。私の質問はなぜですか(動作に正当な理由があるのか​​、それともそのように機能するのか)。私の世界では、内部にを$("ul").append("<li/>").append($("<a/>", ...))追加します。順序付けされていないリスト内に作成され、次の追加がアイテムに対して機能するため、その中にリンクを追加する必要があると思います。しかし、そうではなく、その理由があるのだろうか?<a/><li/>$("ul").append("<li/>")<li/><li/>

ご質問にお時間を割いていただき、誠にありがとうございます。

4

2 に答える 2

4

この.append()関数は、jQueryオブジェクトによって参照される要素を更新しないため、2番目を呼び出すと、その要素.append()に対して引き続き呼び出されます。<ul>

次のように再構築できます。

$('<li/>').append('<a/>', {
    href: value.url,
    title: value.title
}).appendTo('ul');
于 2013-02-18T22:09:51.920 に答える
1

$.append()追加されているアイテムではなく、追加されたアイテムを返します。

于 2013-02-18T22:09:17.647 に答える