2013-11-07 3 views
0

У меня есть ниже строки кода, который не работает:Почему мой addClass не работает?

$("ul li.open > a").addClass("level-one"); 

Но если я изменить его, чтобы найти идентификатор, а не класса он работает

Мне нужно, чтобы получить эту работу без таргетинга идентификатор:

$("ul li#menu-item-24 > a").addClass("level-one"); 

Вот код средства разработки дает мне (это с идентификатором строки кода выше), я глупа здесь ?:

Screenshot:

Я пытаюсь настроить таргетинг на ссылку, которая отправляется в Google (используется для примера).

Стоит отметить, что инструменты dev не приносят никаких ошибок для любой линии.

EDIT

КИ .open класса добавляются, когда связь первого уровня щелкнула (структура для плагина меню аккордеона я использую - https://github.com/tefra/navgoco) и в соответствии с просьбой вот мой HTML:

<ul id="demo1" class="nav"><li id="menu-item-24" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-24 open"><a href="http://google.com">Logged In<span class="caret"></span></a> 
<ul class="sub-menu" data-index="0" style="display: block;"> 
    <li id="menu-item-25" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-25"><a href="#test" class="boobies">Sub menu item</a></li> 
</ul> 
</li> 
<li id="menu-item-26" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-26"><a href="http://skills.com">Testing<span class="caret"></span></a> 
<ul class="sub-menu" data-index="1" style="display: none;"> 
    <li id="menu-item-27" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-27"><a href="http://boom.com" class="boobies">Child</a></li> 
</ul> 
</li> 
</ul> 

JS для плагина можно найти здесь: https://github.com/tefra/navgoco/blob/master/src/jquery.navgoco.js

Все, что я делаю для него инициализируется гармошку так:

$("#demo1").navgoco({accordion: true}); 
+0

Что не подходит вашему коду? – tymeJV

+0

@tymeJV Мне нужно поставить одноуровневое имя класса на эту ссылку Google, но не использовать определенный идентификатор. – egr103

+0

Попробуйте использовать это: '$ ('li.open'). Children ('a'). AddClass ('level-one '); ' – vinaykrsharma

ответ

1

Хорошо, я был вырыть через плагин, я использую и нашел способ, которым она предназначается для этой конкретной ссылке:

$("li:has(ul) > a").addClass("level-one"); 

Это работало. Я ценю количество людей, которые пытались попытаться и помочь.

0

Я избегаю использования оператора >, так как я всегда с ним не пользуюсь. Я хотел бы сделать это:

$("ul li.open a").first().addClass("level-one"); 
+0

Спасибо, но это не сработало при таргетинге на имя класса, что и нужно сделать. FYI это сработало с использованием ID, который я не получаю. – egr103

+0

Можете ли вы разместить свой html? –

0

Try:

$("ul li.open a:first").addClass("level-one"); 
0

Если ваш класс добавляется после, может нужно было записать так:

$("ul").find(".open > a").addClass("level-one"); 
+0

Не работает Боюсь – egr103

+0

Bummer. У вас есть все html, js и CSS? Можете ли вы поместить их сюда, чтобы мы могли помочь вам лучше? – thomasstephn

0

Это предполагает, что ваша уль загружается с классом .nav по умолчанию, и он не добавляется позже.

$('ul.nav').on('click','.menu-item', function(){ 
    $(this).children('a').first().addClass('level-one'); 
}); 
Смежные вопросы