Почему это работает только в Firefox? - PullRequest
3 голосов
/ 18 июня 2009

Я создал отдельный пример, чтобы выяснить, почему это работает только в Firefox:

var ul = jQuery('<ul></ul>');

jQuery(selector).children().each(function() {
   var li = jQuery('<li></li>');
   var label = '<label for="' + this.id + '">' + this.name + '</label>';
   li.append(label);
   li.append(this);
   ul.append(li);
});

Любой браузер webkit или даже IE терпит неудачу в этой строке:

li.append(this);

это HTMLInputElement. Есть идеи?

Спасибо, Пит

Ответы [ 2 ]

1 голос
/ 18 июня 2009

Проблема в том, что «this» - это узел DOM, уже расположенный в каком-то месте. Вы не можете перемещать узлы DOM, которые уже находятся где-то без предварительного удаления или копирования их.

Если вы хотите:

  • переместите его, вы должны сделать

    li.append ($ (this) .remove ())

  • скопируйте его, вы сделаете

    li.append ($ (this) .clone (true))

На самом деле, я довольно озадачен тем, что это должно работать в FF. Если это так, это ошибка FF.

Приветствия

0 голосов
/ 18 июня 2009

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

Я использую 1.3.2 и использую ваш код (скопировать и вставить). Я могу успешно запустить его в FF 3, IE 8 и Chrome.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...