Поиск предыдущего и следующего li с помощью Javascript

#javascript #jquery #dom #kendo-ui #jquery-events

#javascript #jquery #dom #kendo-пользовательский интерфейс #jquery-события

Вопрос:

У меня есть неопределенное количество вложенных тегов ul и li, таких как:

 <ul>    
    <li>5
        <ul>
            <li>2
                <ul>
                    <li>1
                    </li>
                    <li>4
                        <ul>
                            <li>3
                            </li>
                        </ul>
                    </li>
                </ul>
            </li>
        </ul>
    </li>
    <li>7
        <ul>
            <li>9
                <ul>
                    <li>14
                    <li>
                </ul>
            <li>11
            </li>
        </ul>
    </li>
</ul>
  

Я использую Kendo ui treeview, и он возвращает мне элемент, из которого была удалена буква l (это может быть элемент внутри li, потому что у меня есть несколько промежутков в каждом из них).

Что мне нужно, так это знать предыдущий и следующий li через DOM и Javascript, чтобы сохранить новый порядок элементов.

Кто-нибудь может помочь, пожалуйста?

Комментарии:

1. У меня загружен jquery, но я получаю объект dom, а не jquery… Я так не думаю, но я новичок в этом, так что … 🙂

2. Вы рассматривали использование jQuery в режиме без конфликтов? Это позволяет вам иметь несколько версий на одной странице и работать с другими библиотеками Javascript.

Ответ №1:

Вы не указали, какое событие вы используете, но оно должно быть «dragend». Таким образом, вы должны быть в состоянии определить родительский li, а затем просто изменить порядок всех его дочерних элементов.

Посмотрите на эту скрипку здесь. Это ближе к тому, что вы ищете?

http://jsfiddle.net/burkeholland/CrRUz/

Ответ №2:

Использование jQuery:

 var parentLi = $(e).closest('li');
var previousLi = parentLi.prev()
var nextLi = parentLi.next();
  

Где e элемент, получающий удаление.

Комментарии:

1. спасибо, Александр, но это работает не полностью. Я думаю, что он не вводит родительские дочерние элементы для поиска соответствия, поэтому большую часть времени я не получаю результатов (выполнение console. войдите в Chrome) спасибо

2. Итак, если следующий <li> братский элемент содержит <ul>, вы тогда хотите найти следующий <li> внутри него?