@@ -14,6 +14,9 @@ layui.define('jquery', function(exports) {
14
14
var THIS = 'layui-this' ;
15
15
var SHOW = 'layui-show' ;
16
16
var TITLE = '.layui-tab-title' ;
17
+ var CONST = {
18
+ CLASS_COLLAPSE_EXTEND : 'layui-collapse-item-expand'
19
+ } ;
17
20
18
21
var Element = function ( ) {
19
22
this . config = { } ;
@@ -404,28 +407,36 @@ layui.define('jquery', function(exports) {
404
407
}
405
408
406
409
// 折叠面板
407
- , collapse : function ( ) {
410
+ , collapse : function ( ) {
408
411
var othis = $ ( this ) ;
409
- var icon = othis . find ( '.layui-colla-icon' ) ;
410
- var elemCont = othis . siblings ( '.layui-colla-content' ) ;
411
- var parents = othis . parents ( '.layui-collapse' ) . eq ( 0 ) ;
412
- var filter = parents . attr ( 'lay-filter' ) ;
413
- var isNone = elemCont . css ( 'display' ) === 'none' ;
412
+ var wrapper = othis . closest ( '.layui-collapse' ) ;
413
+ var filter = wrapper . attr ( 'lay-filter' ) ;
414
+
415
+ var ANIM_MS = 200 ; // 动画过渡毫秒数
416
+ var CLASS_ITEM = '.layui-colla-item' ;
417
+ var CLASS_CONTENT = '.layui-colla-content' ;
418
+
419
+ var thisItemElem = othis . parent ( CLASS_ITEM ) ;
420
+ var thisContentElem = othis . siblings ( CLASS_CONTENT ) ;
421
+ var isNone = thisContentElem . css ( 'display' ) === 'none' ;
414
422
415
423
// 是否手风琴
416
- if ( typeof parents . attr ( 'lay-accordion' ) === 'string' ) {
417
- var show = parents . children ( '.layui-colla-item' ) . children ( '.' + SHOW ) ;
418
- show . siblings ( '.layui-colla-title' ) . children ( '.layui-colla-icon' ) . html ( '' ) ;
419
- show . removeClass ( SHOW ) ;
424
+ if ( typeof wrapper . attr ( 'lay-accordion' ) === 'string' ) {
425
+ var itemElems = wrapper . children ( CLASS_ITEM ) ;
426
+ itemElems . removeClass ( CONST . CLASS_COLLAPSE_EXTEND ) ;
427
+ itemElems . children ( CLASS_CONTENT ) . slideUp ( ANIM_MS , function ( ) {
428
+ $ ( this ) . removeClass ( SHOW ) ;
429
+ } ) ;
420
430
}
421
431
422
- elemCont [ isNone ? 'addClass' : 'removeClass' ] ( SHOW ) ;
423
- icon . html ( isNone ? '' : '' ) ;
432
+ // 展开或收缩
433
+ thisItemElem [ isNone ? 'addClass' : 'removeClass' ] ( CONST . CLASS_COLLAPSE_EXTEND ) ;
434
+ thisContentElem [ isNone ? 'slideDown' : 'slideUp' ] ( ANIM_MS ) ;
424
435
425
436
layui . event . call ( this , MOD_NAME , 'collapse(' + filter + ')' , {
426
- title : othis
427
- , content : elemCont
428
- , show : isNone
437
+ title : othis ,
438
+ content : thisContentElem ,
439
+ show : isNone
429
440
} ) ;
430
441
}
431
442
} ;
@@ -617,27 +628,27 @@ layui.define('jquery', function(exports) {
617
628
} ) ;
618
629
}
619
630
620
- //折叠面板
621
- , collapse : function ( elem ) {
631
+ // 折叠面板
632
+ , collapse : function ( elem ) {
622
633
var ELEM = 'layui-collapse' ;
623
634
var targetElem = elem || $ ( '.' + ELEM + elemFilter ) ;
624
635
625
- targetElem . each ( function ( ) {
626
- var elemItem = $ ( this ) . find ( '.layui-colla-item' )
627
- elemItem . each ( function ( ) {
636
+ targetElem . each ( function ( ) {
637
+ var elemItem = $ ( this ) . find ( '.layui-colla-item' ) ;
638
+ elemItem . each ( function ( ) {
628
639
var othis = $ ( this )
629
- , elemTitle = othis . find ( '.layui-colla-title' )
630
- , elemCont = othis . find ( '.layui-colla-content' )
631
- , isNone = elemCont . css ( 'display' ) === 'none' ;
640
+ var elemTitle = othis . find ( '.layui-colla-title' ) ;
641
+ var elemCont = othis . find ( '.layui-colla-content' ) ;
642
+ var isNone = elemCont . css ( 'display' ) === 'none' ;
632
643
633
- //初始状态
644
+ // 初始状态
634
645
elemTitle . find ( '.layui-colla-icon' ) . remove ( ) ;
635
- elemTitle . append ( '<i class="layui-icon layui-colla-icon">' + ( isNone ? '' : '' ) + '</i>' ) ;
646
+ elemTitle . append ( '<i class="layui-icon layui-icon-right layui-colla-icon"></i>' ) ;
647
+ othis [ isNone ? 'removeClass' : 'addClass' ] ( CONST . CLASS_COLLAPSE_EXTEND ) ;
636
648
637
- //点击标题
649
+ // 点击标题
638
650
elemTitle . off ( 'click' , call . collapse ) . on ( 'click' , call . collapse ) ;
639
651
} ) ;
640
-
641
652
} ) ;
642
653
}
643
654
} ;
0 commit comments