jQuery append/appendTo и IE6

Ну... IE6 - плохой, плохой жук - да, но хах, сегодня это меня с ума свело.

var friendMail = $('.friend-email').html();
$('.friend-mails').children('.right, .left').append(friendMail);

Приведенный выше код работает в IE7,8/FF/Safari/Chrome безупречно, но IE6 не работает. Однако, когда я сделал из этого скрипку, она работала и в IE6. Какая-то странная ошибка, скрипка работает, а мой сайт нет.

Дальше самое интересное...

$('.friend-email .mail').clone().appendTo('.friend-mails .left');

Этот код работает во всех вышеупомянутых браузерах + IE6. Но я немного запутался... В чем разница между этими двумя? (добавить против appendTo, я думаю...)

Заранее спасибо!


person tomsseisums    schedule 04.01.2011    source источник
comment
какие элементы вы пытаетесь добавить?   -  person Caspar Kleijne    schedule 04.01.2011
comment
<div> с <label>, <input> внутри него. См. jsFiddle для получения дополнительной информации.   -  person tomsseisums    schedule 04.01.2011


Ответы (1)


Разница между append и appendTo зависит от порядка. Следующие две строки идентичны:

$('.friend-email .mail').clone().appendTo('.friend-mails .left');
$('.friend-mails .left').append($('.friend-email .mail').clone());

Однако настоящая разница между вашими двумя примерами заключается в том, что первый извлекает HTML как текст и создает новые элементы из этого текста, а вторая версия использует методы DOM для клонирования существующих элементов DOM, которые более надежен (и, как правило, быстрее).

person David Tang    schedule 04.01.2011