显示隐藏模块实现的几种方式

news/2024/7/11 1:29:15 标签: css, jquery, 显示隐藏, 组件化

显示隐藏模块实现的几种方式">显示隐藏模块实现的几种方式

网页结构:

<style>css">
body {
    width: 400px;
    margin: 0 auto;
}
.btn {
    width:50%;
    height: 30px;
}
#box {
    width: 200px;
    height:100px;
    background-color: red;
    overflow: hidden;
}
</style>

<button id="btn-show" class="btn">显示</button>
<button id="btn-hide" class="btn">隐藏</button>
<div id="box" class=""> </div>

1、传统jQuery代码:

//函数的定义
var silent = {
    show: function ($elem) {
        $elem.html('<p>我要显示了</p>');
        $elem.show();
        setTimeout(function () {
            $elem.html($elem.html() + '<p>我已经显示了</p>');
        }, 1000)
    },
    hide: function ($elem) {
        $elem.hide();
    }
};
//函数的执行
var $box = $('#box');
$('#btn-show').on('click', function () {
    silent.show($box);
});
$('#btn-hide').on('click', function () {
    silent.hide($box);
});    

2、通过回调函数实现解耦

var silent = {
    show: function ($elem, showCallback, shownCallback) {
        if (typeof showCallback === 'function') showCallback();
        $elem.show();
        if (typeof shownCallback === 'function') shownCallback();
    },
    hide: function ($elem) {
        $elem.hide();
    }
};

var $box = $('#box');
$('#btn-show').on('click', function () {
    silent.show($box, function () {
        $box.html('<p>我要显示了</p>');
    }, function () {
        setTimeout(function () {
            $box.html($box.html() + '<p>我已经显示了</p>');
        }, 1000)
    });
});
$('#btn-hide').on('click', function () {
    silent.hide($box);
});

3、发布订阅模式

发布订阅模式可以让不同的人增加新的功能而互不影响。

var silent = {
    inti: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) {
        $elem.data('status','hide').trigger('hide');
        $elem.hide();
        $elem.data('status','hidden').trigger('hidden');
    }
};

//触发事件
var $box = $('#box'); 
silent.inti($box);
$('#btn-show').on('click',function () {
    silent.show($box);
});

//小A同学对事件绑定的时间
$box.on('show shown hide hidden',function(e){
    if(e.type === 'show'){
        $box.html('<p>我要显示了</p>');
    }else if(e.type === 'shown'){
        setTimeout(function () {
            $box.html($box.html() + '<p>我已经显示了</p>');
        }, 1000);
    }
});
$('#btn-hide').on('click', function () { 
    silent.hide($box);
});

http://www.niftyadmin.cn/n/814102.html

相关文章

一位转行小白的内心独白

半年多的JavaEE学习生活结束了&#xff0c;也是我进入IT行业的开始。对于一个投身于IT的新人&#xff0c;经验谈不上&#xff0c;一些学习的心得倒是可以拿出来探讨一下&#xff0c;我们该如何面临这个似曾相识的社会&#xff0c;突然一天如此接近。面对“全球经济不景气”带来…

将NavigationBar设置透明

转载自&#xff1a;http://blog.sina.com.cn/s/blog_621403ef0100tuna.html 将NavigationBar设置透明&#xff08;仅将指定视图控制器进行透明处理&#xff09;&#xff0c;步骤如下&#xff1a;1.在视图控制器的头文件中实现UINavigationControllerDelegate&#xff0c;例如&a…

【Qt】Pixmap

知识补充&#xff1a; QPixmap类&#xff1a; http://doc.qt.io/qt-5/qpixmap.html QPixmap类代表图像&#xff0c;实现在 QtGui 共享库中。 构造函数&#xff1a; 以下构造函数生成的 QPixmap 对象为空图像&#xff1a; 1. QPixmap(); // 构造一个大小为 0 的空图像 …

搜索框动态显示联想内容

一、效果展示 网页HTML结构 <div id"header-search" class"search fl"><form action"https://s.taobao.com/search" class"search-form"><input type"text" name"q" placeholder"灵魂没事一…

UISearchBar和 UISearchDisplayController的使用

最近经常用到搜索类的布局&#xff0c;大体是这样的 上面是一个navigationController&#xff0c;接下来一个searchBar&#xff0c;下面是tableView searchBar这个控件就用来搜索tableView上的数据 [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsCo…

【Qt】Qt Creator快捷键

问题&#xff1a; 用QT Creater编程&#xff0c;如果没有自动补全是很痛苦的事情&#xff0c;于是便查阅了QT的文档&#xff0c;发现CTRLSPACE是自动补全的快捷键; 但是在 Creater里使用居然没有效果&#xff0c;估计是输入法切换的冲突&#xff08;CTRLSPACE是我中英文输入的…

前端优化之资源压缩

一、基础知识 0x1 浏览器请求过程 请求过程中一些潜在的性能优化点 dns是否可以通过缓存减少dns查询时间&#xff1f;网络请求的过程走最近的网络环境&#xff1f;相同的静态资源是否可以缓存&#xff1f;能否减少请求http请求大小&#xff1f;减少http请求服务端渲染 0x2 资…

自律,勇敢,成就自我

“一个意志坚定&#xff0c;敢作敢为的人&#xff0c;永远信任自己。老天赋予任何人以能力&#xff0c;无非希望他能成为一个勇敢的人。” 我是一名即将毕业的来自渭南师范学院学习软件工程的大四学生。作为一名本专业的学生&#xff0c;在大学的前三年中&#xff0c;我也臆想通…