点击显示 然后快递点隐藏 显示 再点显示就显示不出 有问题 这该怎么解决
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>显示隐藏模块</title>
<link rel="stylesheet" href="./css/base.css">
<style>
body {
/* position: relative; */
width: 400px;
margin: 0 auto;
}
.btn {
width: 50%;
height: 30px;
}
#box {
display: none;
width: 100%;
height: 200px;
background-color: red;
}
.transiton {
transition: all 0.5s;
}
.fadeOut {
visibility: hidden;
opacity: 0;
}
</style>
</head>
<body>
<button id="btn-show" class="btn">显示</button><button id="btn-hide" class="btn">隐藏</button>
<div id="box" class="transiton fadeOut">
</div>
<button class="btn btn2">显示2</button>
<script src="./js/jquery.js"></script>
<script src="./js/showHide.js"></script>
<script>
// <script src="./js/showHide.js">
var $box = $('#box');
// silent.init($box);
css3.fade.init($box);
$('#btn-show').on('click', function () {
css3.fade.show($box);
});
$('#btn-hide').on('click', function () {
css3.fade.hide($box);
})
// 发布订阅的方式
// 小A
$box.on('show shown hide hidden', function (e) {
console.log(e.type);
});
// $box.on('click', function(){
// })
</script>
</body>
</html>var silent = {
init: function($elem) {
if($elem.is(':hidden')) {
$elem.data('status', 'hidden');
} else {
$elem.data('status', 'shown');
}
},
show: function($elem) {
if($elem.data('status') === 'show') return;
if($elem.data('status') === 'shown') return;
$elem.data('status', 'show').trigger('show');
$elem.show();
$elem.data('status', 'shown').trigger('shown');
},
hide: function($elem) {
if($elem.data('status') === 'hide') return;
if($elem.data('status') === 'hidden') return;
$elem.data('status', 'hide').trigger('hide');
$elem.hide();
$elem.data('status', 'hidden').trigger('hidden')
}
};
var css3 = {
fade: {
init: function($elem) {
if($elem.is(':hidden')) {
$elem.data('status', 'hidden');
} else {
$elem.data('status', 'shown');
}
},
show: function ($elem) {
if($elem.data('status') === 'show') return;
if($elem.data('status') === 'shown') return;
$elem.data('status', 'show').trigger('show');
$elem.one('transitionend', function(){
$elem.data('status', 'shown').trigger('shown');
});
$elem.show();
setTimeout(function(){
$elem.removeClass('fadeOut');
}, 20)
},
hide: function ($elem) {
if($elem.data('status') === 'hide') return;
if($elem.data('status') === 'hidden') return;
$elem.data('status', 'hide').trigger('hide');
$elem.one('transitionend', function(){
$elem.hide();
$elem.data('status', 'hidden').trigger('hidden');
})
$elem.addClass('fadeOut');
}
},
slideUpDown: {
show: function () {
},
hide: function () {
}
},
slideLeftRight: {
show: function () {
},
hide: function () {
}
},
fadeSlideUpDown: {
show: function () {
},
hide: function () {
}
},
fadeSlideLeftRight: {
show: function () {
},
hide: function () {
}
}
};
var js = {
fade: {
show: function () {
},
hide: function () {
}
},
slideUpDown: {
show: function () {
},
hide: function () {
}
},
slideLeftRight: {
show: function () {
},
hide: function () {
}
},
fadeSlideUpDown: {
show: function () {
},
hide: function () {
}
},
fadeSlideLeftRight: {
show: function () {
},
hide: function () {
}
}
};点击显示 然后快递点隐藏 显示 再点显示就显示不出 这是原因造成的
4
收起
正在回答 回答被采纳积分+1
1回答
琥珀_2020
2019-12-24 19:57:18
show: function ($elem) {
if($elem.data('status') === 'show') return;
if($elem.data('status') === 'shown') return;
$elem.data('status', 'show').trigger('show');
$elem.off('transitionend').one('transitionend', function(){
$elem.data('status', 'shown').trigger('shown');
});
$elem.show();
setTimeout(function(){
$elem.removeClass('fadeOut');
}, 20)
},
hide: function ($elem) {
if($elem.data('status') === 'hide') return;
if($elem.data('status') === 'hidden') return;
$elem.data('status', 'hide').trigger('hide');
$elem.off('transitionend').one('transitionend', function(){
$elem.hide();
$elem.data('status', 'hidden').trigger('hidden');
})
$elem.addClass('fadeOut');
}解决问题了 $elem.off('transitionend').one('transitionend', function(){
$elem.data('status', 'shown').trigger('shown');
}); 在这里加个 off() 就不会出现快速点击隐藏显示 显示不出的问题的
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星