liujiachang
2016-08-16 21:02:46
$(function() { var Accordion = function(el, multiple) { this.el = el || {}; this.multiple = multiple || false; // Variables privadas var links = this.el.find('.link'); // Evento links.on('click', {el: this.el, multiple: this.multiple}, this.dropdown) } Accordion.prototype.dropdown = function(e) { var $el = e.data.el; $this = $(this), $next = $this.next(); $next.slideToggle(); $this.parent().toggleClass('open'); if (!e.data.multiple) { $el.find('.submenu').not($next).slideUp().parent().removeClass('open'); }; } var accordion = new Accordion($('#accordion'), false);});有幾處不明白的,麻煩大大們解答下var Accordion = function(el, multiple),這個函數傳的第二個參數有什么作用?links.on('click', {el: this.el, multiple: this.multiple}, this.dropdown) 中間那句花括號起到什么作用了?var $el = e.data.el; ? e.data.el是什么意思?有啥作用$el.find('.submenu').not($next).slideUp().parent().removeClass('open'); ?最后這句話not是干嘛用的,為啥要這樣寫呢這個效果來自jquery插件庫的這個插件 ? http://www.jq22.com/jquery-info810
5 回答
已采納

荒丶謬
TA貢獻7條經驗 獲得超5個贊
multiple的作用是用來控制是否能展開多個列表(這里傳入false,每次就只能展開一個,展開另外一個就收起前面展開的)
{el: this.el, multiple: this.multiple}這個就是傳入到函數里面的數據data
所以在這里e.data就相當于{el: this.el, multiple: this.multiple}那么e.data.el就是取得其中的值了this.el。
然后就是$el.find('.submenu')這個選擇器取到了id為accordion元素下面的所有class為submenu的ul,但是這里只要展開當前你點擊的li下面的ul。而不需要其他的展開。所以用到了.not($next).就是非當前點擊中的其他li下面的ul都隱藏。第一個問題的參數multiple就是用來判斷執不執行這句代碼
if (!e.data.multiple) {
? ? ? ?$el.find('.submenu').not($next).slideUp().parent().removeClass('open');
};
- 5 回答
- 1 關注
- 4344 瀏覽
添加回答
舉報
0/150
提交
取消