简体   繁体   English

单击 li 时旋转或更改字体真棒

[英]Rotate or change a font awesome when li is clicked

I have the following ul li setup and when I click on an li the submenu opens.我有以下ul li设置,当我单击li时,子菜单会打开。 I also have a font awesome caret next to that li and I want to rotate the caret 180degrees or change the icon with the fas fa-caret-up icon each time I click to open a submenu.我在那个li旁边还有一个很棒的插入符号,我想在每次单击打开子菜单时将插入符号旋转 180 度或使用fas fa-caret-up图标更改图标。 Any ideas on how to do this?关于如何做到这一点的任何想法?

 $( 'li.submenu a[href="#"]').click(function(e) { e.preventDefault(); $(this).next().toggle(); return false; });
 ul.ul_submenu, ul.ul_submenu_2{ display:none; }
 <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <ul> <li class="submenu" id="atag"> <a href="#">Apparel & Accessories <i class="fas fa-caret-down" style="color: grey;"></i></a> <ul class="ul_submenu"> <li class="submenu"> <a href="#">Clothing <i class="fas fa-caret-down" style="color: grey;"></i></a> <ul class="ul_submenu"> <li class="submenu"> <a href="#">Men <i class="fas fa-caret-down" style="color: grey;"></i></a> <ul class="ul_submenu"> <li class="submenu">blabla</li> </ul> </li> </ul> </li> </ul> </li> </ul>

you can use .find() method to get the tag, and .toggleClass() to change the caret direction, note that I used array of classes in .toggleClass() , I will leave it to you to change the arrow direction, but for me I would have caret-left for closed, and caret-down for opened, here is working snippet:您可以使用.find()方法来获取标签,并.toggleClass()来更改插入符号的方向,请注意我在.toggleClass()中使用了类数组,我将由您来更改箭头方向,但是对我来说,我会在关闭时使用caret-left caret-down ,在打开时使用插入符号,这是工作片段:

 $( 'li.submenu a[href="#"]').click(function(e) { e.preventDefault(); $(this).next().toggle(); $(this).find('i').toggleClass(['fa-caret-down', 'fa-caret-left']); return false; });
 ul.ul_submenu, ul.ul_submenu_2{ display:none; }
 <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <ul> <li class="submenu" id="atag"><a href="#">Apparel & Accessories <i class="fas fa-caret-down" style="color: grey;"></i></a> <ul class="ul_submenu"> <li class="submenu"><a href="#">Clothing <i class="fas fa-caret-down" style="color: grey;"></i></a> <ul class="ul_submenu"> <li class="submenu"><a href="#">Men <i class="fas fa-caret-down" style="color: grey;"></i></a> <ul class="ul_submenu"> <li class="submenu">blabla</li> </ul> </li> </ul> </li> </ul> </li> </ul>

You just need a toggleClass and some styling on the i class.您只需要在i class 上设置一个 toggleClass 和一些样式。 You can change the icon directly with JS, changing the class of the i可以直接用JS改图标,改i的class

 $( 'li.submenu a[href="#"]').click( function(e) { e.preventDefault(); $(this).toggleClass('open'); $(this).next().toggle(); return false; });
 ul.ul_submenu, ul.ul_submenu_2{ display:none; } #atag ai { transition: all.3s; } #atag a.open i { transform: rotate(180deg); }
 <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <ul> <li class="submenu" id="atag"><a href="#">Apparel & Accessories <i class="fas fa-caret-down" style="color: grey;"></i></a> <ul class="ul_submenu"> <li class="submenu"><a href="#">Clothing <i class="fas fa-caret-down" style="color: grey;"></i></a> <ul class="ul_submenu"> <li class="submenu"><a href="#">Men <i class="fas fa-caret-down" style="color: grey;"></i></a> <ul class="ul_submenu"> <li class="submenu">blabla</li> </ul> </li> </ul> </li> </ul> </li> </ul>

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

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