jquery手风琴效果有几处不解之处

$(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);

});

有几处不明白的,麻烦大大们解答下

  1. var Accordion = function(el, multiple),这个函数传的第二个参数有什么作用?

  2. links.on('click', {el: this.el, multiple: this.multiple}, this.dropdown) 中间那句花括号起到什么作用了?

  3. var $el = e.data.el;   e.data.el是什么意思?有啥作用

  4. $el.find('.submenu').not($next).slideUp().parent().removeClass('open');  最后这句话not是干嘛用的,为啥要这样写呢

这个效果来自jquery插件库的这个插件   http://www.jq22.com/jquery-info810

liujiachang
浏览 4264回答 5
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');};

慕无忌9493264

学习到了!

书墨谈谈

请问这个效果在手机上移动之后再点击会跳一下,怎么解决

无意的学会

var accordion = new Accordion($('#accordion'), false);这句是什么意思?什么情况下会走false?

qq_有那種努力也做不好事_04341739

请问这个手风琴效果的下拉菜单中css代码中的.open是哪里来得,html代码中也没有啊
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JQuery