2016-03-21 3 views
0

я столкнулся одна проблемы с JQuery родительском уль Li открытой ниже мой HTML структура:Keep нажатая статье отслеживается/активное использование JQuery

<div> 
    <ul> 
    <li class="has-sub"> 
     <a href="#">1</a> 
     <ul> 
      <li><a href="#">1.1</a></li> 
      <li><a href="#">1.2</a></li> 
      <li class="has-sub"> 
      <a href="#">2</a> 
      <ul> 
       <li><a href="#">2.1</a></li> 
       <li><a href="#">2.2</a></li> 
       <li class="has-sub"> 
        <a href="#">3</a> 
        <ul> 
         <li><a href="#">3.1</a></li> 
         <li><a href="#">3.2</a></li> 
         More... 
        </ul> 
       </li> 
      </ul> 
      </li> 
     </ul> 
    </li> 
    </ul> 
</div> 

JQuery:

$(function() { 
    $('a').each(function() { 
    if ($(this).prop('href') == window.location.href) { 
     $(this).addClass('activation'); 
    } 
    }); 
}); 

CSS:

.open > a:after, 
.open > a:before { 
-webkit-transform: rotate(45deg); 
-moz-transform: rotate(45deg); 
-ms-transform: rotate(45deg); 
-o-transform: rotate(45deg); 
transform: rotate(89deg);} 

activation класс добавить, но не открыть родительский ul li.

Мне нужен класс, который активирует, тогда этот родительский ul li откроется в это время.

Как достичь этого решения?

+2

ну, похоже, вы не применяете. Так что очевидно, что это не сработает. Вам нужно добавить класс открытым для всех, что вы пытаетесь открыть. Если .activation имеет некоторый код открытия тоже. Вы не показываете это, поэтому, я не знаю, – KyleK

+0

Я добавил '$ (this) .parent ('ul'). AddClass ('open');' но не работает –

ответ

0

Кажется, это то, что вы пытаетесь спросить:

$(function() { 
    $('a').click(function() { 
    if ($(this).prop('href') == window.location.href) { 

     $('li').removeClass('open'); 
     $('a').removeClass('activation'); 
     $(this).addClass('activation').closest("li").addClass("open"); 
    } 
    }); 
}); 

Here is the JSFiddle demo

Как проверить структуру с помощью кода элемента.

0

вам необходимо использовать следующие ЯША:

$(function() { 
    $('a').removeClass('activation'); 
    $('ul').removeClass('open'); 
    $('a').each(function() { 
    if ($(this).attr('href') == '#') { //replace your url 
     $(this).addClass('activation'); 
     $(this).parent().parent().addClass('open'); 
    } 
    }); 
}); 

работается DEMO

+0

Не работает, для информации мой по умолчанию css является https://jsfiddle.net/oLsmwrL8/5/ Я прокомментирую ваш код js, см. это –

+0

https://jsfiddle.net/dipali_vasani/oLsmwrL8/6/. Это то, что вам нужно? –

0

Это мой последний JQuery код:

$(function() { 
    $('a').each(function() { 
    if ($(this).prop('href') == window.location.href) { 
     $(this).addClass('activation'); 
     $(this).parent().closest('.has-sub').addClass('open active'); 
    } 
    }); 
}); 

Но теперь работают только вторая позиция не работает 3-й или 4-я позиция

css:

.active { 
    display: block; 
} 
Смежные вопросы