|
1 | 1 | /*
|
2 |
| - * jQuery Navgoco Menus Plugin v0.1.0 (2013-07-07) |
| 2 | + * jQuery Navgoco Menus Plugin v0.1.1 (2013-07-08) |
3 | 3 | * https://github.com/tefra/navgoco
|
4 | 4 | *
|
5 | 5 | * Copyright (c) 2013 Chris T
|
|
82 | 82 | this.open[idx] = 0;
|
83 | 83 | }
|
84 | 84 | },
|
85 |
| - toggle: function(flag) { |
86 |
| - var self = this; |
87 |
| - var list = Array.prototype.slice.call(arguments, 1); |
88 |
| - var only = {}; |
89 |
| - |
90 |
| - for (var i = 0; i < list.length; i++) { |
91 |
| - only[list[i]] = true; |
92 |
| - } |
93 |
| - |
94 |
| - self.$el.find('ul').each(function() { |
95 |
| - var sub = $(this); |
96 |
| - var idx = sub.attr('data-index'); |
97 |
| - if (!only.length || only.hasOwnProperty(idx)) { |
98 |
| - self._toggle(sub, flag); |
99 |
| - if (only.length === 1) { |
100 |
| - return false; |
101 |
| - } |
102 |
| - } |
103 |
| - }); |
104 |
| - self._save(); |
105 |
| - }, |
106 | 85 | _save: function() {
|
107 | 86 | if (this.options.save) {
|
108 | 87 | var save = {};
|
|
124 | 103 | this.open = cookie.hasOwnProperty(this.uuid) ? cookie[this.uuid] : {};
|
125 | 104 | }
|
126 | 105 | },
|
| 106 | + toggle: function(open) { |
| 107 | + var self = this; |
| 108 | + var list = {}; |
| 109 | + var args = Array.prototype.slice.call(arguments, 1); |
| 110 | + var length = args.length; |
| 111 | + |
| 112 | + for (var i = 0; i < length; i++) { |
| 113 | + list[args[i]] = true; |
| 114 | + } |
| 115 | + |
| 116 | + self.$el.find('ul').each(function() { |
| 117 | + var sub = $(this); |
| 118 | + var idx = sub.attr('data-index'); |
| 119 | + if (length === 0 || list.hasOwnProperty(idx)) { |
| 120 | + self._toggle(sub, open); |
| 121 | + if (length === 1) { |
| 122 | + return false; |
| 123 | + } |
| 124 | + } |
| 125 | + }); |
| 126 | + self._save(); |
| 127 | + }, |
| 128 | + destroy: function() { |
| 129 | + $.removeData(this.$el); |
| 130 | + this.$el.find("li:has(ul) > a").unbind('click'); |
| 131 | + } |
127 | 132 | };
|
128 | 133 |
|
129 | 134 | var cookie = null;
|
|
134 | 139 | save: true,
|
135 | 140 | cookie: {
|
136 | 141 | name: 'navgoco',
|
137 |
| - expires: false, |
| 142 | + expires: 0, |
138 | 143 | path: '/'
|
139 | 144 | },
|
140 | 145 | slide: {
|
|
144 | 149 | };
|
145 | 150 |
|
146 | 151 | $.fn.navgoco = function(options) {
|
147 |
| - var method = (typeof options === 'string' && options.charAt(0) !== '_'); |
148 |
| - if (method) { |
| 152 | + if (typeof options === 'string' && options.charAt(0) !== '_' && options !== 'init') { |
| 153 | + var callback = true; |
149 | 154 | var args = Array.prototype.slice.call(arguments, 1);
|
150 | 155 | } else {
|
151 | 156 | options = $.extend({}, defaults, options || {});
|
|
156 | 161 | return this.each(function(idx) {
|
157 | 162 | var $this = $(this);
|
158 | 163 | var obj = $this.data('navgoco');
|
159 |
| - if (method && obj) { |
| 164 | + if (!obj) { |
| 165 | + obj = new Plugin(this, callback ? defaults : options, idx); |
| 166 | + $this.data('navgoco', obj); |
| 167 | + } |
| 168 | + if (callback) { |
160 | 169 | obj[options].apply(obj, args);
|
161 |
| - } else if (!obj && !method) { |
162 |
| - $this.data('navgoco', new Plugin(this, options, idx)); |
163 | 170 | }
|
164 | 171 | });
|
165 | 172 | };
|
|
0 commit comments