jQuery и несколько li AppendTo - PullRequest
       46

jQuery и несколько li AppendTo

0 голосов
/ 24 января 2012

У меня возникают проблемы с потерей некоторых элементов li после добавления в список.

var html содержит элементы списка.

$(html).hide().appendTo('#thelist').fadeIn();

Внедрение работает, когда есть один загруженный элемент li, однако, если есть несколько jQuery для li, ничего не вставляется, не говоря уже о его добавлении.

Может кто-нибудь предложить исправление?

РЕДАКТИРОВАТЬ1:

Пример: список - это моя ul, и он не скрыт.

<ul id="thelist">
   <li>entry1</li>
   <li>entry2</li>
   <li>entry3</li>
</ul>

РЕДАКТИРОВАТЬ 2: Список существует, как указано выше в HTML, а затемjQuery добавляет дополнительные li, которые я хочу добавить.

EDIT 3: html содержит вызов jQuery ajax, содержащий html, для отображения около 5 li с содержанием статьи.Это правильно добавляет к ul, когда я не использую fade in или animate.Когда я добавляю эффект постепенного изменения, он добавляет элементы к элементу ul, но не добавляет их.

РЕДАКТИРОВАТЬ 4: Вот функция загрузки:

 $(function() {
     $('.more').live('click',function() {
     var element = $(this);
     var msg = element.attr('id');
     $('#morebutton').html('<p><em>Loading Articles.</em></p>');
     $.ajax({
         type: 'POST',
         url: 'more.asp',
         data: 'lastmsg=' + msg,
         cache: false,
         success: function(html){
             $('#morebutton').remove();
             $(html).hide().appendTo('#thelist').fadeIn();
         }
     });
     });
 });

РЕШЕНИЕ:

Я получил его постепенно, изменив:

 $(html).hide().appendTo('#thelist').fadeIn();

на

 var item = $(html).fadeIn();
 $('#thelist').append(item);

Похоже, это как-то связано сспособ jQuery цепочки в определенном порядке.

Ответы [ 3 ]

0 голосов
/ 24 января 2012

Это прекрасно работает для меня. Убедитесь, что ваши элементы списка и список существуют. Проверьте на опечатки любых идентификаторов.

http://jsfiddle.net/gftdz/1/

0 голосов
/ 24 января 2012

Не уверен, но, может быть, вы хотите что-то вроде этого

$('#thelist').fadeOut('fast',function(){$('#thelist').append(html).fadeIn()});
0 голосов
/ 24 января 2012

попробуйте использовать после

$(html).hide().after('#thelist').fadeIn();
...