Нахождение элемента LI
значение this
внутри обработчика событий - это объект, к которому прикреплен обработчик, либо с помощью addEventListener
, либо путем назначения функции длясвойство / атрибут onEventName.Но если обработка события делегирована, this
может не быть объектом, для которого было инициировано событие.
свойство target
объекта event
- это объект, для которогособытие было уволено.(srcElement
является проприетарным и нестандартным псевдоним из target
.)
Так что, если вы слушаете событие, сработавшее на входе, например "change ", элемент li
находится в цепочке родительских узлов, которую можно кодировать непосредственно в обработчике как
function (event) {
let li = event.target.parentNode.parentNode;
//... do stuff with li
, которая является хрупкой, если принять определенную структуру элемента или выполнить поиск в цепочке родительских узлов:
function (event) {
let li;
for( li = event.target; li = li.parentNode;) {
if( li.tagName == "LI") {
break;
}
}
// process li ....
, который находит элемент LI или оставляет li
установленным на null
.
Поиск своей позиции в списке
Если неупорядоченный или упорядоченный элементне имеет собственного идентификатора, его можно найти в цепочке родительских узлов элемента ввода аналогично тому, как находить элемент LI выше (т. е. путем непосредственного кодирования или поиска).
Положение элемента LIв списке OL или UL можно найти записи, выполнив поиск и сопоставив его с элементом в свойстве children
элемента OL / UL.
Обратите внимание, что node.children
коллекция живая и не должна использоватьсясортировка элементов LI путем динамического перемещения их позиций в DOM.