简体   繁体   English

Open Materialize基于路径在活动链接上嵌套可折叠

[英]Open Materialize nested collapsible on active link based on path

I've created a JSfiddle with what I'm trying to achieve. 我用我想要实现的东西创建了一个JSfiddle Basically, I am using the Collapsible component from https://materializecss.com/collapsible.html but trying to extend so that it is a nested collapsible. 基本上,我使用https://materializecss.com/collapsible.html中的可折叠组件,但尝试扩展以使其成为嵌套的可折叠组件。 Specifically, I am trying to open the collapsible on the right link depending on the URL path. 具体来说,我试图根据URL路径打开右链接上的可折叠。

Open collapsible on active link depending on URL 根据URL在活动链接上打开可折叠

 $(document).ready(function() { $('.collapsible').collapsible(); var path = "some-folder/some-link2.aspx"; }); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> <link href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css" rel="stylesheet"/> <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <ul class="collapsible"> <li> <div class="collapsible-header"><i class="material-icons">filter_drama</i>WS</div> <div class="collapsible-body"> <ul class="collapsible"> <li> <div class="collapsible-header"><i class="material-icons">filter_drama</i>WS M</div> <div class="collapsible-body"> <ul> <li><a href=some-folder/some-link1.aspx>Link 1</a></li> <li><a href=some-folder/some-link2.aspx>Link 2</a></li> <li><a href=some-folder/some-link3.aspx>Link 3</a></li> </ul> </div> </li> <li> <div class="collapsible-header"><i class="material-icons">place</i>WS P</div> <div class="collapsible-body"> <ul> <li><a href=some-folder/some-link1.aspx>Link 1</a></li> <li><a href=some-folder/some-link2.aspx>Link 2</a></li> <li><a href=some-folder/some-link3.aspx>Link 3</a></li> </ul> </div> </li> <li> <div class="collapsible-header"><i class="material-icons">whatshot</i>WS S</div> <div class="collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div> </li> </ul> </div> </li> <li> <div class="collapsible-header"><i class="material-icons">place</i>HS</div> <div class="collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div> </li> <li> <div class="collapsible-header"><i class="material-icons">whatshot</i>SS</div> <div class="collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div> </li> </ul> 

Here you have. 你有。

The issue was that Collapsible doesn't have a refresh ( https://github.com/jquery/jquery-mobile/issues/3771 ); 问题是Collapsible没有刷新( https://github.com/jquery/jquery-mobile/issues/3771 ); therefore, you must re-instantiate it. 因此,您必须重新实例化它。

So, the only thing you needed to do is to find the parent bullets and add the class 'active', then instantiate Collapsible again to make it work. 因此,您唯一需要做的就是找到父项目符号并添加“活动”类,然后再次实例化Collapsible以使其正常工作。

 $(document).ready(function() { $('.collapsible').collapsible(); $('#btn').click(function(){ var path = "some-folder/some-link2.aspx"; var selector = 'a[href="' + path + '"]'; var links = $(selector); links.each(function(index){ var link = $(this).css({"color": "red"}); var parent = link.closest('ul.collapsible > li'); parent.addClass('active'); var grandparent = parent.parents('ul.collapsible > li'); grandparent.addClass('active'); }); // Collapsible doesn't have a refresh. // Just instantiate it again in order to work. $('.collapsible').collapsible() }); }); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> <link href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css" rel="stylesheet"/> <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <input type="button" id="btn" value="Find URL" /> <ul class="collapsible"> <li> <div class="collapsible-header"><i class="material-icons">filter_drama</i>WS</div> <div class="collapsible-body"> <ul class="collapsible"> <li> <div class="collapsible-header"><i class="material-icons">filter_drama</i>WS M</div> <div class="collapsible-body"> <ul> <li><a href=some-folder/some-link1.aspx>Link 1</a></li> <li><a href=some-folder/some-link2.aspx>Link 2</a></li> <li><a href=some-folder/some-link3.aspx>Link 3</a></li> </ul> </div> </li> <li> <div class="collapsible-header"><i class="material-icons">place</i>WS P</div> <div class="collapsible-body"> <ul> <li><a href=some-folder/some-link1.aspx>Link 1</a></li> <li><a href=some-folder/some-link2.aspx>Link 2</a></li> <li><a href=some-folder/some-link3.aspx>Link 3</a></li> </ul> </div> </li> <li> <div class="collapsible-header"><i class="material-icons">whatshot</i>WS S</div> <div class="collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div> </li> </ul> </div> </li> <li> <div class="collapsible-header"><i class="material-icons">place</i>HS</div> <div class="collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div> </li> <li> <div class="collapsible-header"><i class="material-icons">whatshot</i>SS</div> <div class="collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div> </li> </ul> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM