I have a main menu (collapse) that uses Bootstrap 3.3.7 and Font Awesome 5.0.1
What I am looking for :
When the menu is closed, a “plus” icon is displayed.
When the menu is open, a “minus” icon is displayed.
The “plus” icon is displayed on the menu but does not change.
I think there is a problem with my JS code.
JavaScript
x
36
36
1
<nav role="navigation" aria-labelledby="block-navigationprincipale-menu" id="block-navigationprincipale">
2
<ul class="menu nav navbar-nav">
3
<li class="expanded dropdown open">
4
<a href="/boutique" class="dropdown-toggle collapse-change-icon" data-toggle="dropdown"><i class="fas fa-plus-circle fa-lg"></i> Boutiques</a>
5
<ul class="menu dropdown-menu">
6
<li>
7
<a href="/boutique" data-drupal-link-system-path="boutique"><i class="fas fa-shopping-bag fa-lg"></i> Boutiques</a>
8
</li>
9
<li>
10
<a href="/produit" data-drupal-link-system-path="produit"><i class="fas fa-gift fa-lg"></i> Produits</a>
11
</li>
12
<li>
13
<a href="/service" data-drupal-link-system-path="service"><i class="fas fa-sign-language fa-lg"></i> Services</a>
14
</li>
15
</ul>
16
</li>
17
<li class="expanded dropdown">
18
<a href="/groupe" class="dropdown-toggle collapse-change-icon" data-toggle="dropdown"><i class="fas fa-plus-circle fa-lg"></i> Groupes</a>
19
<ul class="menu dropdown-menu">
20
<li>
21
<a href="/groupe" data-drupal-link-system-path="groupe"><i class="fas fa-users fa-lg"></i> Groupes</a>
22
</li>
23
<li>
24
<a href="/annonce" data-drupal-link-system-path="annonce"><i class="fas fa-newspaper fa-lg"></i> Annonces</a>
25
</li>
26
<li>
27
<a href="/article" data-drupal-link-system-path="article"><i class="fas fa-file-alt fa-lg"></i> Articles</a>
28
</li>
29
</ul>
30
</li>
31
<li>
32
<a href="/profil" data-drupal-link-system-path="profil"><i class="fas fa-id-card fa-lg"></i> Profils</a>
33
</li>
34
</ul>
35
</nav>
36
Here is my JS code. Something is wrong with it.
JavaScript
1
12
12
1
(function ($) {
2
3
$(".collapse-change-icon").on('shown.bs.collapse', function () {
4
$(this).find('[data-fa-i2svg]').removeClass("fa-plus-circle").addClass("fa-minus-circle");
5
});
6
7
$(".collapse-change-icon").on('hide.bs.collapse', function () {
8
$(this).find('[data-fa-i2svg]').removeClass("fa-minus-circle").addClass("fa-plus-circle");
9
});
10
11
})(window.jQuery);
12
Advertisement
Answer
You have not used the right bootstrap events for dropdown. Try this one.
JavaScript
1
10
10
1
jQuery(document).ready(function ($) {
2
$(".dropdown").on('shown.bs.dropdown', function () {
3
$(this).find('[data-fa-i2svg]').removeClass("fa-plus-circle").addClass("fa-minus-circle");
4
});
5
6
$(".dropdown").on('hidden.bs.dropdown', function () {
7
$(this).find('[data-fa-i2svg]').removeClass("fa-minus-circle").addClass("fa-plus-circle");
8
});
9
});
10
REf: https://getbootstrap.com/docs/3.3/javascript/#dropdowns-events