≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > jQuery

jQuery UI改写Accordion,实现同时展开多个Panel

人气:840 时间:2018-09-26

这篇文章主要为大家详细介绍了jQuery UI改写Accordion,实现同时展开多个Panel,具有一定的参考价值,可以用来参考一下。

最近在做一个项目,其中有个UI要做成类似jQuery UI中Accordion的样子。但是Accordion在某一时刻只可以展开一个Panel,所以就改写了一下Accordion,让它可以同时展开多个Panel。

源代码:

/**
 * 同时展开多个Panel
 *
 * @param 
 * @arrange (512.笔记) www.q1010.com
 **/
(function($) {
if ($.ui.accordion) {
	var old_clickHandler = $.ui.accordion.prototype._clickHandler;
	var new_clickHandler = function(event, target) {
		var o = this.options;
		if (o.disabled) return false;
		// called only when using activate(false) to close all parts programmatically
		if (!event.target && o.collapsible) {
			this.headers.removeClass("ui-state-active ui-corner-top")
						.addClass("ui-state-default ui-corner-all")
						.find(".ui-icon")
						.removeClass(o.icons.headerSelected)
						.addClass(o.icons.header);
			this.headers.next().addClass('ui-accordion-content-active');
			var toHide = this.headers.next(),
						data = {
							options: o,
							newHeader: $([]),
							oldHeader: o.headers,
							newContent: $([]),
							oldContent: toHide
						},
						toShow = (this.active = $([]));
			this._toggle(toShow, toHide, data);
			return false;
		}
		// get the click target
		var clicked = $(event.currentTarget || target);
		var clickedIsActive = clicked.next().css("display") != "none";
		// if animations are still active, or the active header is the target, ignore click
		if (this.running || (!o.collapsible && clickedIsActive)) {
			return false;
		}

		// switch classes
		clicked.toggleClass("ui-state-active")
					.toggleClass("ui-corner-top")
					.toggleClass("ui-state-default")
					.toggleClass("ui-corner-all")
					.find(".ui-icon")
					.toggleClass(o.icons.headerSelected)
					.toggleClass(o.icons.header);
		clicked.next().addClass('ui-accordion-content-active');

		// find elements to show and hide
		var toShow = clicked.next(),
					toHide = clickedIsActive ? clicked.next() : $([]),
					data = {
						options: o,
						newHeader: clickedIsActive && o.collapsible ? $([]) : clicked,
						oldHeader: $([]),
						newContent: clickedIsActive && o.collapsible ? $([]) : toShow.find('> *'),
						oldContent: $([])
					},
					down = true;

		this._toggle(toShow, toHide, data, clickedIsActive, down);

		return false;
	};

	$.extend($.ui.accordion.defaults, {
		collapsible: true,
		multipleMode: false
	});

	$.extend($.ui.accordion.prototype, {
		_clickHandler: function(event, target) {
			if (this.options.multipleMode === true) {
				new_clickHandler.apply(this, arguments);
			}
			else {
				old_clickHandler.apply(this, arguments);
			}
		}
	});
};
})(jQuery);
将上面的代码保存成.js文件并引入到页面,调用的时候只要设置multipleMode为true就可以了。

/**
 * 同时展开多个Panel
 *
 * @param 
 * @arrange (512.笔记) www.q1010.com
 **/
$("#accordion").accordion({multipleMode: true});

本文来自:http://www.q1010.com/180/1728-0.html

注:关于jQuery UI改写Accordion,实现同时展开多个Panel的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:Accordion

您可能感兴趣的文章

上一篇:jQuery用iframe来解决跨域的简单示例(2)
下一篇:jQuery 给Tabs控件添加两个方法next和prev、一个事件beforegotonext功能实例
热门文章
  • jquery 一键复制到剪贴板的简单示例
  • Js动态添加复选框Checkbox的简单示例
  • jQuery 使用CSS()方法改变CSS样式的简单示例
  • jQuery 使用label实现点击表单input,提示文字消失的示例
  • jQuery 使用prop()函数控制多选框(全选,反选)的简单示例
  • jQuery用iframe来解决跨域的简单示例(1)
  • jquery 实现在同一页面跳转到指定位置的方法
  • js+jQuery 实现页面跳转的方法
  • jquery 获取子节点及当前节点属性值的简单示例
  • jQuery UI改写Accordion,实现同时展开多个Panel
  • 最新文章
    • jQuery end()函数用法示例
    • jQuery stop()方法使用示例
    • jQuery 检查某个元素是否存在的简单示例
    • jQuery 绑定事件的四种简单示例
    • jquery 图片放大实现方法
    • jquery 模拟多级复选框的简单示例
    • jquery 可拖拽窗体实现方法
    • jQuery 动态加载脚本文件的两种示例
    • jquery定时器的简单示例
    • Js动态添加复选框Checkbox的简单示例

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。