Почему я могу добавлять объекты с помощью appendTo, но не добавлять в jQuery? - PullRequest
1 голос
/ 22 мая 2009

Как это работает:

 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 ]

1 голос
/ 22 мая 2009

Я считаю, что это связано с реализацией. Если вы посмотрите на способ добавления AppendTo, он по сути берет каждый элемент в массиве items и запускает $ ("ul"). Append (items [i]).

Добавить, хотя, похоже, не работает на массивах. Вы заметите, что даже без пустых ваша строка все равно не будет работать. Я не совсем понимаю работу append, но я верю, что происходит то, что функция последовательно обрабатывает все аргументы, но никогда не пытается вырвать элементы из массива. Так что происходит, что он пытается добавить массив к элементу и терпит неудачу. По иронии судьбы это будет работать: $ ("ul"). Empty (). Append (items [0], items [1], items [2], items [3]);

В любом случае вам придется сделать что-то подобное, чтобы выполнить то, к чему вы стремитесь:

$ ( "уль") пусто (). $ (items) .each (function (e, elem) {$ ( 'Уль') добавление (эль);.})

0 голосов
/ 22 мая 2009

Что, если вы измените последнюю строку вашего второго примера на

 $('ul').empty().append(items);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...