代码之家  ›  专栏  ›  技术社区  ›  bendewey

为什么我可以使用appendto添加对象,但不在jquery中附加?

  •  1
  • bendewey  · 技术社区  · 16 年前

    为什么会这样:

     var items = [];
     $.each([1,2,3,4], function() {
         items.push($('<li />').html('test' + this));
     });
     // clearing/appending as two seperate calls
     $('ul').empty();
     $(items).appendTo('ul');
    

    但这不是吗?

     var items = [];
     $.each([1,2,3,4], function() {
         items.push($('<li />').html('test' + this));
     });
     // clearing/appending in one fluent call
     $('ul').empty().append($(items));
    

    这样会引发以下错误:

    不支持此类接口。

    2 回复  |  直到 16 年前
        1
  •  1
  •   jacobangel    16 年前

    我相信这是由于实施。如果您看看Appendto的编写方式,它实际上是获取item s数组中的每个项并运行一个$(“ul”).append(item s[i])。

    尽管append似乎不适用于数组。你会注意到,即使没有空的,你的线路仍然无法工作。我不完全理解append的工作原理,但我相信函数会按顺序地选择所有参数,但从不尝试将元素从数组中分离出来。因此,它尝试将数组附加到元素,但失败了。具有讽刺意味的是,这将起作用:$(“ul”).empty().append(items[0]、items[1]、items[2]、items[3]);

    不管怎样,你必须这样做才能完成你想要做的事情:

    $(“ul”).empty(); $(items).each(函数(e,elem) $('ul').append(elem);)

        2
  •  0
  •   alex    16 年前

    如果将第二个示例的最后一行改为

     $('ul').empty().append(items);