Ответ 1
jQuery позволяет сразу добавлять кучу элементов в объект jquery, но только тогда, когда эти элементы являются чистыми элементами DOM, а не самими объектами jquery.
var $e1 = $('#x'),
$e2 = $('#y'),
$e3 = $('#z');
var e1 = $e1[0],
e2 = $e2[0],
e3 = $e3[0];
>>> $( [$el, $e2, $e3] ) // does not work
[[div], [div], [div]] // jquery object that contains other jQuery objects
>>> $( [el, e2, e3] ) // works
[div, div, div] // jquery object that contains pure DOM objects
Когда мы передаем массив объектов jquery в jQuery()
, они НЕ "разворачиваются" перед добавлением их в объект jquery результата.
Также помните, что передача одного объекта jquery делает разворачивание.
>>> $( $e1 )
[div] // returns a jquery object
Интересно, что если мы смешаем jquery и чистые объекты DOM, на них будут работать только чистые объекты:
>>> $( [$e1, e2, $e3] ).css('background-color', '#000');
Обратите внимание, что второй элемент является чистым элементом DOM, а цвет фона применяется только к этому второму элементу.
В нижней строке: если вы хотите добавить сразу несколько элементов в объект jquery, добавьте чистый объект DOM, а не объекты jquery.