Skip to content

Commit 2f6b224

Browse files
committed
Merge pull request #82 from micrdy/master
Added callback beforeClose and beforeOpen
2 parents 5d8445a + bef7355 commit 2f6b224

File tree

2 files changed

+28
-12
lines changed

2 files changed

+28
-12
lines changed

README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,10 @@ slicknav.css can be modified to fit website design
5454

5555
### Callbacks
5656
'init': function(){}, // Called after SlickNav creation
57-
'open': function(trigger){}, // Called after menu or sub-menu opened.
58-
'close': function(trigger){} // Called after menu or sub-menu closed.
57+
'beforeOpen': function(trigger){}, // Called before menu or sub-menu opened.
58+
'beforeClose': function(trigger){} // Called before menu or sub-menu closed.
59+
'afterOpen': function(trigger){} // Called after menu or sub-menu opened.
60+
'afterClose': function(trigger){} // Called after menu or sub-menu closed.
5961

6062
### Methods
6163
$('.menu').slicknav('toggle'); // Method to toggle the menu
@@ -90,4 +92,4 @@ More examples at [SlickNav.com](http://slicknav.com)
9092
* Opera
9193
* IE7+
9294
* Android Browser
93-
* iOS Safari
95+
* iOS Safari

jquery.slicknav.js

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*!
2-
SlickNav Responsive Mobile Menu v1.0.2
2+
SlickNav Responsive Mobile Menu v1.0.3
33
(c) 2015 Josh Cope
44
licensed under MIT
55
*/
@@ -22,8 +22,10 @@
2222
showChildren: false,
2323
brand: '',
2424
init: function () {},
25-
open: function () {},
26-
close: function () {}
25+
beforeOpen: function () {},
26+
beforeClose: function () {},
27+
afterOpen: function () {},
28+
afterClose: function () {}
2729
},
2830
mobileMenu = 'slicknav',
2931
prefix = 'slicknav';
@@ -297,33 +299,45 @@
297299

298300
if (el.hasClass(prefix+'_hidden')) {
299301
el.removeClass(prefix+'_hidden');
302+
//Fire beforeOpen callback
303+
if (!init) {
304+
settings.beforeOpen(trigger);
305+
}
300306
el.slideDown(duration, settings.easingOpen, function(){
301307

302308
$(trigger).removeClass(prefix+'_animating');
303309
$(parent).removeClass(prefix+'_animating');
304310

305-
//Fire open callback
311+
//Fire afterOpen callback
306312
if (!init) {
307-
settings.open(trigger);
313+
settings.afterOpen(trigger);
308314
}
309315
});
310316
el.attr('aria-hidden','false');
311317
items.attr('tabindex', '0');
312318
$this._setVisAttr(el, false);
313319
} else {
314320
el.addClass(prefix+'_hidden');
321+
322+
//Fire init or beforeClose callback
323+
if (!init){
324+
settings.beforeClose(trigger);
325+
}else if (trigger == 'init'){
326+
settings.init();
327+
}
328+
315329
el.slideUp(duration, this.settings.easingClose, function() {
316330
el.attr('aria-hidden','true');
317331
items.attr('tabindex', '-1');
318332
$this._setVisAttr(el, true);
319333
el.hide(); //jQuery 1.7 bug fix
320-
334+
321335
$(trigger).removeClass(prefix+'_animating');
322336
$(parent).removeClass(prefix+'_animating');
323337

324-
//Fire init or close callback
338+
//Fire init or afterClose callback
325339
if (!init){
326-
settings.close(trigger);
340+
settings.afterClose(trigger);
327341
}
328342
else if (trigger == 'init'){
329343
settings.init();
@@ -436,4 +450,4 @@
436450
return returns !== undefined ? returns : this;
437451
}
438452
};
439-
}(jQuery, document, window));
453+
}(jQuery, document, window));

0 commit comments

Comments
 (0)