mui的折叠面板 accordion 默认展开收缩逻辑是,展开其中一个的同时收缩起同级已经展开的元素

实际需求:展开其中一个不必收缩同级元素

分析mui.js源代码:

window.addEventListener('tap', function(event) {
// console.log("1"+cell);
if (!cell) {
return;
}
var isExpand = false;
var classList = cell.classList;
var ul = cell.parentNode;
if (ul && ul.classList.contains(CLASS_RADIO_VIEW)) {
if (classList.contains(CLASS_SELECTED)) {
return;
}
var selected = ul.querySelector('li' + SELECTOR_SELECTED);
if (selected) {
selected.classList.remove(CLASS_SELECTED);
}
classList.add(CLASS_SELECTED);
$.trigger(cell, 'selected', {
el: cell
});
return;
}
if (classList.contains('mui-collapse') && !cell.parentNode.classList.contains('mui-unfold')) {
if (!preventDefaultException.test(event.target.tagName)) {
event.detail.gesture.preventDefault();
} if (!classList.contains(CLASS_ACTIVE)) { //展开时,需要收缩其他同类
var collapse = cell.parentNode.querySelector('.mui-collapse.mui-active');
//方法一在源代码里面注释下面找个判断
if (collapse) {
collapse.classList.remove(CLASS_ACTIVE);
}
isExpand = true;
}
classList.toggle(CLASS_ACTIVE);
if (isExpand) {
//触发展开事件
$.trigger(cell, 'expand'); //scroll
//暂不滚动
// var offsetTop = $.offset(cell).top;
// var scrollTop = document.body.scrollTop;
// var height = window.innerHeight;
// var offsetHeight = cell.offsetHeight;
// var cellHeight = (offsetTop - scrollTop + offsetHeight);
// if (offsetHeight > height) {
// $.scrollTo(offsetTop, 300);
// } else if (cellHeight > height) {
// $.scrollTo(cellHeight - height + scrollTop, 300);
// }
}
} else {
radioOrCheckboxClick(event);
}
});

得出2种解决办法的结论。

方法一:注释如下代码

//				if (collapse) {
// collapse.classList.remove(CLASS_ACTIVE);
// }

方法二:关键在 ruturn false; 这句可以取消mui.js库默认绑定的事件,这样就能达到重写。

           //自定义展开后不需要讲同级元素折叠
mui('body').on('tap','.mui-collapse',function(e){ this.classList.toggle('mui-active');
return false;//可以取消继续执行默认绑定事件
})

方法三:阻止事件冒泡

//自定义展开后不需要讲同级元素折叠
mui('body').on('tap','.mui-collapse',function(e){
//阻止事件冒泡
e.stopPropagation(); this.classList.toggle('mui-active');
})

修改mui accordion(折叠面板)默认展开收缩行为的更多相关文章

  1. 布局-EasyUI Panel 面板、EasyUI Tabs 标签页/选项卡、EasyUI Accordion 折叠面板、EasyUI Layout 布局

    EasyUI Panel 面板 通过 $.fn.panel.defaults 重写默认的 defaults. 面板(panel)当做其他内容的容器使用.它是创建其他组件(比如:Layout 布局.Ta ...

  2. Jquery Accordion 折叠面板

    属性 类型 默认值 active Boolean/Number/jQuery/Selector/Element 第一个面板 设定默认显示的面板.设置为 false 时默认不显示面板,需 collaps ...

  3. amazeui折叠面板智能化展开

    2016年12月12日 21:05:18 星期一 场景: 我拿这个组件用作管理后台的侧边栏 效果: 根据当前访问的url不同, 展开不同的面板 amazeui折叠面板 js代码: <script ...

  4. (八)easyUI之Accordion折叠面板:动态面板

    二.动态面板 数据库设计 函数设计:该函数用于获取某个节点的所有子节点 CREATE FUNCTION fn_getAddress_ChildList_test(rootId INT) RETURNS ...

  5. (七)easyUI之Accordion折叠面板:普通的静态面板

    一.普通的静态面板 前台 <%@ page language="java" contentType="text/html; charset=UTF-8" ...

  6. Vue 折叠面板Collapse在标题上添加组件后,阻止面板冒泡的用法

    iView组件中,折叠面板Collapse点击面板标题部分,会出现面板收起或展开的效果.那么在面板标题后面再添加下拉框之类的组件时,会出现跟面板点击一样的效果,这时候就需要阻止冒泡的用法了.具体代码: ...

  7. accordion(折叠面板)的使用

    一.前言: 折叠面板(accordion)允许使用多面板(panel),同时显示一个或多个面板(panel).每个面板(panel)都有展开和折叠的内建支持.点击面板(panel)头部可展开或折叠面板 ...

  8. jQuery EasyUI 折叠面板accordion的使用实例

    1.对折叠面板区域 div 设置 class=”easyui-accordion” 2.在区域添加多个 div, 每个 div 就是一个面板 (每个面板一定要设置 title 属性). 3.设置面板属 ...

  9. mui折叠面板的使用

    折叠面板从二级列表中演化而来,dom结构和二级列表类似,如下: <div class="mui-content"> <div class="mui-ca ...

随机推荐

  1. 使用简单的python语句编写爬虫 定时拿取信息并存入txt

    # -*- coding: utf-8 -*- #解决编码问题import urllibimport urllib2import reimport osimport time page = 1url ...

  2. npm install mysql --save-dev

    npm install X: 会把X包安装到node_modules目录中 不会修改package.json 之后运行npm install命令时,不会自动安装X npm install X –sav ...

  3. 循环队列 c 实现!!!!

    上数据结构课的时候老师让写了一个循环队列子系统. 代码如下: #include<stdio.h> #include<malloc.h> #define MAXLEN 100 # ...

  4. (C/C++学习笔记) 十二. 指针

    十二. 指针 ● 基本概念 位系统下为4字节(8位十六进制数),在64位系统下为8字节(16位十六进制数) 进制表示的, 内存地址不占用内存空间 指针本身是一种数据类型, 它可以指向int, char ...

  5. 元素大小-偏移量(offset)客户区大小(client)滚动大小(scroll)

    一.偏移量---offset 1.定位父级 在理解偏移大小之前,首先要理解offsetParent.人们并没有把offsetParent翻译为偏移父级,而是翻译成定位父级,很大原因是offsetPar ...

  6. java.lang.NoClassDefFoundError: Could not initialize class org.jfree.chart.JFreeChart

    最近在进行利用jfreechart生成图表时发现,项目在本地运行的好好的,一部署到服务器(linux系统)上就不行,报这样的错误: java.lang.NoClassDefFoundError: Co ...

  7. php 文件上传处理

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAS4AAACvCAIAAADMuaTdAAAcaklEQVR4nO2da3Abx33Az3H6JdNx2i

  8. HDU 1589 Stars Couple(计算几何求二维平面的最近点对和最远点对)

    Time Limit: 1000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...

  9. scroll滚动动画(js/ts)

    //(蓝色this部分为dom) scrollToLeft(option?: { duration?: number, direction?: number }) { let direction = ...

  10. MySQL主从复制报错及解决方法

    mysql> show slave status \G *************************** 1. row *************************** Slave_ ...