1- $ ( document ) . ready ( function ( ) {
2- $ ( '.navbar .dropdown-item.dropdown' ) . on ( 'click' , function ( e ) {
3- var $el = $ ( this ) . children ( '.dropdown-toggle' ) ;
4-
5- if ( $el . length > 0 && $ ( e . target ) . hasClass ( 'dropdown-toggle' ) ) {
6- var $parent = $el . offsetParent ( ".dropdown-menu" ) ;
7- $ ( this ) . parent ( "li" ) . toggleClass ( 'open' ) ;
8-
9- if ( ! $parent . parent ( ) . hasClass ( 'navbar-nav' ) ) {
10- if ( $parent . hasClass ( 'show' ) ) {
11- $parent . removeClass ( 'show' ) ;
12- $el . next ( ) . removeClass ( 'show' ) ;
13- $el . next ( ) . css ( {
14- "top" : - 999 ,
15- "left" : - 999
16- } ) ;
17- } else {
18- $parent . parent ( ) . find ( '.show' ) . removeClass ( 'show' ) ;
19- $parent . addClass ( 'show' ) ;
20- $el . next ( ) . addClass ( 'show' ) ;
21- $el . next ( ) . css ( {
22- "top" : $el [ 0 ] . offsetTop ,
23- "left" : $parent . outerWidth ( ) - 4
24- } ) ;
1+ ( function ( $ ) {
2+ $ . fn . navbarDropdown = function ( ) {
3+ $ ( this ) . find ( '.dropdown-item.dropdown' ) . on ( 'click' , function ( e ) {
4+ var $el = $ ( this ) . children ( '.dropdown-toggle' ) ;
5+
6+ if ( $el . length > 0 && $ ( e . target ) . hasClass ( 'dropdown-toggle' ) ) {
7+ var $parent = $el . offsetParent ( ".dropdown-menu" ) ;
8+ $ ( this ) . parent ( "li" ) . toggleClass ( 'open' ) ;
9+
10+ if ( ! $parent . parent ( ) . hasClass ( 'navbar-nav' ) ) {
11+ if ( $parent . hasClass ( 'show' ) ) {
12+ $parent . removeClass ( 'show' ) ;
13+ $el . next ( ) . removeClass ( 'show' ) ;
14+ $el . next ( ) . css ( {
15+ "top" : - 999 ,
16+ "left" : - 999
17+ } ) ;
18+ } else {
19+ $parent . parent ( ) . find ( '.show' ) . removeClass ( 'show' ) ;
20+ $parent . addClass ( 'show' ) ;
21+ $el . next ( ) . addClass ( 'show' ) ;
22+ $el . next ( ) . css ( {
23+ "top" : $el [ 0 ] . offsetTop ,
24+ "left" : $parent . outerWidth ( ) - 4
25+ } ) ;
26+ }
27+
28+ e . preventDefault ( ) ;
29+ e . stopPropagation ( ) ;
2530 }
2631
27- e . preventDefault ( ) ;
28- e . stopPropagation ( ) ;
32+ return this ;
2933 }
34+ } ) ;
35+ $ ( this ) . find ( '.dropdown' ) . on ( 'hidden.bs.dropdown' , function ( ) {
36+ $ ( this ) . find ( 'li.dropdown' ) . removeClass ( 'show open' ) ;
37+ $ ( this ) . find ( 'ul.dropdown-menu' ) . removeClass ( 'show open' ) ;
38+ } ) ;
39+ return this ;
40+ } ;
41+ } ) ( jQuery ) ;
42+ /*
43+ $(document).ready(function () {
44+
45+ $('.navbar .dropdown-item.dropdown').on('click', function (e) {
46+ var $el = $(this).children('.dropdown-toggle');
47+ if ($el.length > 0 && $(e.target).hasClass('dropdown-toggle')) {
48+ var $parent = $el.offsetParent(".dropdown-menu");
49+ $(this).parent("li").toggleClass('open');
50+
51+ if (!$parent.parent().hasClass('navbar-nav')) {
52+ if ($parent.hasClass('show')) {
53+ $parent.removeClass('show');
54+ $el.next().removeClass('show');
55+ $el.next().css({"top": -999, "left": -999});
56+ } else {
57+ $parent.parent().find('.show').removeClass('show');
58+ $parent.addClass('show');
59+ $el.next().addClass('show');
60+ $el.next().css({"top": $el[0].offsetTop, "left": $parent.outerWidth() - 4});
61+ }
62+ e.preventDefault();
63+ e.stopPropagation();
64+ }
65+ return;
66+ }
67+ });
68+
69+ $('.navbar .dropdown').on('hidden.bs.dropdown', function () {
70+ $(this).find('li.dropdown').removeClass('show open');
71+ $(this).find('ul.dropdown-menu').removeClass('show open');
72+ });
3073
31- return ;
32- }
33- } ) ;
34- $ ( '.navbar .dropdown' ) . on ( 'hidden.bs.dropdown' , function ( ) {
35- $ ( this ) . find ( 'li.dropdown' ) . removeClass ( 'show open' ) ;
36- $ ( this ) . find ( 'ul.dropdown-menu' ) . removeClass ( 'show open' ) ;
37- } ) ;
38- } ) ;
74+ });
75+ */
0 commit comments