Следующее должно делать то, что вы хотите:
$("ul.mainNav li").each(function(i) {
$(this).children("a").attr('data-nav-no',i)
});
Селектор ul.mainNav li
находит все li
s, которые являются потомками ul.mainNav
;который включает элементы, соответствующие селектору ul.subNav li
.Вот почему я опустил селектор ul.subNav li
из моего примера.Если вы хотите, чтобы only предназначался для children элемента ul.mainNav
, тогда вы должны использовать дочерний селектор вместо потомка :
$("ul.mainNav > li, ul.subNav > li").each(function(i) {
$(this).children("a").attr('data-nav-no',i)
});
Используемый вами метод .index()
возвращает позицию элемента относительно его родственных элементов, где-как параметр index
, предоставленный .each()
- позиция элемента в коллекции jQuery.