Активный класс не установлен в `li` с определенным индексом ()?

0

У меня есть UL LI меню некоторых li есть ul детей.

Каждый раз, когда root li щелкнул, я добавляю .active к ним, а затем сохраняю индекс li() в файл cookie,

Проблема заключается в том, что я сохраняю индекс() в файле cookie, active класс устанавливается в child index(), например myclicked root li равен 7.

Но css переходят к дочерним элементам li 6 и активному классу добавляют к первому li ребру из индекса 6, но я хочу найти root li с индексом 7.

Мой код:

$(function () {

        var foo = $.cookie("test");

        if (foo == null) {
            foo = 0;
        }

        $("#MenuArchiv").find("li").removeClass("activ");

        $("#MenuArchiv li").eq(foo).addClass("activ");


        $("#MenuArchiv li").click(function () {
            foo = $(this).index();
            $("#MenuArchiv").find("li").removeClass("activ");
             $(this).addClass("activ");
             $.cookie("test", foo, { expires: 10 });
        });
});

надеюсь понять мое значение :)

  • 3
    Можете ли вы сделать jsfiddle своего сценария со скриншотами того, что вы хотите и как он себя ведет?
  • 0
    я могу использовать jquery cookie в jsfiddle?
Показать ещё 5 комментариев

1 ответ

1
Лучший ответ

Это потому, что способ использования index() дает вам индекс() этого элемента в нем parent. Но вы используете eq() для объекта, который содержит все li (даже те, что находятся внутри других li-элементов. Таким образом, у вас есть два совершенно разных массива, на которые вы хотите использовать один и тот же индекс.

измените свою линию с индексом() -call на следующее, и оно должно работать:

foo = $("#MenuArchiv li").index(this);

это делает то же, что и вы, с eq(), он запрашивает индекс этого элемента в объекте всех li-элементов

Ещё вопросы

Сообщество Overcoder
Наверх
Меню