#jquery
#jquery
Вопрос:
Я прочитал ряд вопросов и ответов в этой области, но ни один из них, похоже, не касается сути (или картофелины) рассматриваемой проблемы.
Если вы укажете .clone() на элемент с идентификатором и / или именем, с дочерними элементами с идентификаторами и / или именами, что вы получите? Элементы без идентификатора или имени? Элементы, которые нарушают правила dom, дублируя идентификаторы?
Ответ №1:
Вызов .clone()
сам по себе не нарушает ни одного из правил DOM ( .clone()
это просто вызов функции, результаты существуют в памяти).
Однако вставка результатов .clone()
вызова в DOM приведет к тому, что в документе будут существовать два элемента с одинаковым id
значением (что, как вы указали, недопустимо).
Ответ №2:
В других ответах это хорошо подытожено, но вот метод удаления id
атрибутов в новом клоне…
clone.find('[id]').removeAttr('id');
В качестве альтернативы, если вы хотите добавить строку к их id
атрибутам…
clone.find('[id]').attr('id', function(index, oldId) { return oldId 'cloned'; });
Ответ №3:
Клонированные элементы еще не вставлены в DOM. Они существуют только в памяти и как таковые не нарушают никаких спецификаций. Это мое понимание.
Ответ №4:
Несколько элементов могут иметь одинаковый размер name
, так что это не проблема.
Вызов clone
элемента сам по себе не нарушает правило DOM об уникальных идентификаторах. Это потому, что клона элемента в данный момент нет в документе. Правило нарушается только тогда, когда вы его вставляете.