У меня есть 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 });
});
});
надеюсь понять мое значение :)
Это потому, что способ использования index() дает вам индекс() этого элемента в нем parent. Но вы используете eq() для объекта, который содержит все li (даже те, что находятся внутри других li-элементов. Таким образом, у вас есть два совершенно разных массива, на которые вы хотите использовать один и тот же индекс.
измените свою линию с индексом() -call на следующее, и оно должно работать:
foo = $("#MenuArchiv li").index(this);
это делает то же, что и вы, с eq(), он запрашивает индекс этого элемента в объекте всех li-элементов