2010-04-23 5 views
2

Учитывая два элемента DOM, скажем a и b, как мы можем определить, что приходит первым в документе?Заказ элементов DOM

Я реализую перетаскивание для набора элементов. И элементы могут быть выбраны в любом порядке, но когда они перетаскиваются, эти элементы нужно перемещать в «правильном» порядке.

ответ

1

Я думаю, что самый простой способ - дать им что-то общее, что можно легко найти. Например, если оба они имеют один и тот же атрибут name, вы можете использовать getElementsByName, который возвращает коллекцию элементов в порядке их появления в документе:

var els = document.getElementsByName("myName"); 

Здесь els[0] будет содержать первый элемент документ, els[1] будет содержать второй.

Использование селекторов, вы могли бы достичь того же с помощью комбинирования сепаратора , выбора:

var els = document.querySelectorAll("#el1, #el2"); 

Единственным недостатком является то, что querySelectorAll() поддерживается только новыми браузерами (так IE6/7 исключены). В качестве альтернативы можно использовать как основу jQuery:

var els = $("#el1, #el2"); 
+0

Это делает предположение, что два элемента, которые он сравнивает, имеют одно и то же имя тега. – 2010-04-23 08:14:52

+0

@austin cheney: Вы вводите в заблуждение 'getElementsByName' с' getElementsByTagName'. 'getElementsByName' извлекает все элементы с одинаковым атрибутом имени, например. 'Hello'. Кроме того, я добавил другие альтернативы. –

+0

Только меньшее количество элементов имеет атрибут имени. – RoToRa

Смежные вопросы