2016-10-04 4 views
0

Я работаю над функцией Collapse и Expand, используя JQuery в своем левом меню.Как управлять переключением с тегом привязки с помощью href

Здесь, когда пользователь нажимает «Родительский», хотел бы показать «Admin» и «Account» с тегом привязки с URL-адресом. До этого момента он работает нормально.

Если пользователь нажимает «Admin», он рушится и показывает корневой элемент «Родитель».

Как сохранить структуру здесь.

$(document).ready(function() { 
    $('ul.child').hide(); 

    $('li:has(.child)').click(function() { 
     $('ul',this).toggle('slow'); 
    }); 

    $('li').click(function(event) { 
     event.stopPropagation(); 
    }); 
<nav id="nav"> 
    <ul> 
     <li> 
      <a>Parent</a> 
      <ul class-"child"> 
       <li class="child"><a href="/Home/Admin">Admin</a></li> 
       <li class="child"><a href="/Home/Account">Account</a></li> 
      </ul> 
     </li> 
    </ul> 
</nav> 

Без тега привязки он будет работать нормально, но когда я включаю якорь тег с URL, «stopPropagation» событие над литий потерпит неудачу. Это заставляет его рушиться на корневой элемент.

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

.Parent 

что делать, чтобы держать структуру, как показано ниже

.Parent 
    .Admin 
    .Account 

ответ

0

Насколько я получаю, вы нажимаете на "Admin" или "счет", он будет перенаправлять на соответствующую страницу и в то время, когда вы хотите открыть иерархию, в которой она находится.

В этом случае, что вы можете сделать, сравните текущий URL-адрес с каждым тегом в иерархии и сравните URL-адрес. window.location.pathname можно использовать для получения пути, который вы хотите сравнить, и each для прокрутки тегов. Дайте мне знать, если вы все еще сомневаетесь в этом.

+0

Да, я хочу отобразить левую иерархию в котором он лежит. Ссылка на код была бы большой помощью – Hegde

+0

'var currentURL = window.location.pathname; $ ('# nav .child li'). Каждый (функция() { \t var aHref = $ (this) .find ('a'). Attr ('href'); if (aHref == currentURL) { \t $ (это) .closest ('ul.child') шоу();. } }); ' Позвольте мне знать, если вы ничего не получите. – SPViradiya

+0

Если это вам полезно, голосование было бы очень полезно :) – SPViradiya

0

$(document).ready(function() { 
 
    $('ul.child').hide(); 
 

 
    $('.parent').click(function() { 
 
     $('ul.child',this.parent).toggle('slow'); 
 
    }); 
 

 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<nav id="nav"> 
 
    <ul> 
 
     <li> 
 
      <a class="parent">Parent</a> 
 
      <ul class="child"> 
 
       <li><a href="#/Home/Admin">Admin</a></li> 
 
       <li><a href="#/Home/Account">Account</a></li> 
 
      </ul> 
 
     </li> 
 
    </ul> 
 
</nav>

Это должно работать. Ваша проблема в том, что когда вы нажимаете на li, вы нажимали на родительский ли раньше.

+0

Это навигационное, но левое меню сворачивается на базу. Когда я нажимаю «Администратор», в левом меню отображается только «Родитель», а справа отображается страница «Главная страница/администратор». Я хочу держать левую часть - Родитель - Admin – Hegde

+0

Это потому, что ваш браузер перенаправляет put #/Home/Admin на ваш url –

+0

Он не работает по мере необходимости. После нажатия на «Администратор» правая секция перемещается, но в левой части отображается только «Родительский». – Hegde

0

Хорошо, Ниже приведен рабочий код.

$(document).ready(function() { 
 
    $('ul.child').hide(); 
 

 
    $('li:has(.child)').click(function() { 
 
     $('ul',this).toggle('slow'); 
 
    }); 
 

 
    $('li').click(function(event) { 
 
     event.stopPropagation(); 
 
    }); 
 
    
 
    });
a{ 
 
    color: blue; 
 
    text-decoration: none; 
 
    
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<nav id="nav"> 
 
    <ul> 
 
     <li> 
 
      <a>Parent</a> 
 
      <ul class="child"> 
 
       <li class="child"><a href="/Home/Admin">Admin</a></li> 
 
       <li class="child"><a href="/Home/Account">Account</a></li> 
 
      </ul> 
 
     </li> 
 
    </ul> 
 
</nav>

Надеясь это поможет :)

+0

Левое меню не имеет своей структуры. Он рушится до основания. – Hegde

+0

вы хотите сохранить его открытым. Я имею в виду родителей и детей по умолчанию? –

+0

Когда открывается страница, я хочу показать только корневой элемент, который является «Родительским». При щелчке «Родитель» вы хотите отобразить «Admin» и «Account». Теперь, если пользователь нажимает «Администратор», то в меню «Влево» должна быть сохранена структура, как есть, и правая часть должна перемещаться. – Hegde

Смежные вопросы