`
sdh88hf
  • 浏览: 69829 次
  • 性别: Icon_minigender_1
  • 来自: 绍兴
社区版块
存档分类
最新评论

闭包实现单例气泡提示

    博客分类:
  • JS
 
阅读更多
var kcbplugs = kcbplugs || {};
kcbplugs.msg = {};

// 弹出层封装类
kcbplugs.msg.msgManager = function() {
	var msgStack = [];

	// 构建div弹出层
	var divDom = $("<div></div>").appendTo(document.body);
	divDom.css("top", 60);

	// 当前是否显示
	var isshow = false;

	// 鼠标是否移入
	var ishand = false;
	divDom.bind("mouseover", function() {
		ishand = true;
	}).bind("mouseout", function() {
		ishand = false;
	});

	return {
		setTop : function(_top) {
			divDom.css("top", _top);
		},
		getMsg : function() {
			return msgStack;
		},
		addMsg : function(msg) {
			msgStack.push(msg);
			if (!isshow) {
				this.showDiv();
			}
		},
		showDiv : function() {
			var me = this;
			if (msgStack.length > 0) {
				isshow = true;

				var msgObj = msgStack[0];

				divDom.removeClass();
				divDom.addClass("message");

				var speed = 2000;
				var delay = 3000;

				if (typeof (msgObj) == 'string') {
					divDom.html(msgObj);
				} else {
					divDom.html(msgObj.text || "");
					divDom.addClass(msgObj.style || "");
					speed = msgObj.speed || 2000;
					delay = msgObj.delay || 3000;
				}

				var _width = parseInt(divDom.css("width").replace("px"));
				var _left = ($browser.getWindowWidth() - _width) / 2;
				divDom.css("left", _left);

				divDom.slideDown(speed).delay(delay).slideDown(1, function() {
					if (!ishand) {
						divDom.slideUp(speed, function() {
							msgStack.shift();
							me.showDiv();
						});
					} else {
						me.showDiv();
					}
				});
			} else {
				isshow = false;
			}
		}
	}
}

var kcbmsg = kcbplugs.msg.msgManager();
/**
 * .message.red{background:#ff5f6a;border: 1px solid #9F2735;}
.message.blue{background:#419AF7;border: 1px solid #2B79C8;}
.message{opacity:0.9;cursor:pointer;font-size:12px;line-height:30px;padding: 0 35px;color:#FFF;background:#3F9A26;border: 1px solid #1C7101;border-top:none;position:absolute;display:none;z-index:200;}
.message a{font-weight:bold;text-decoration:underline;color:#FFF}
 */
分享到:
评论

相关推荐

    js代码-js实现单例模式(配合闭包)

    在这个场景中,我们将探讨如何使用JavaScript和闭包来实现单例模式。 首先,理解闭包的概念是关键。闭包是指有权访问另一个函数作用域中的变量的函数,即使那个函数已经执行完毕。在JavaScript中,闭包可以用来创建...

    通过javascript实现单例模式.rar

    在JavaScript中实现单例模式通常涉及使用一个对象字面量或创建一个包含实例的闭包。压缩包文件代码是一个使用JavaScript实现单例模式的简单示例。 在这个ES6的例子中,我们在构造函数内部检查了是否已经存在一个实例...

    【JavaScript源代码】JS实现单例模式的6种方案汇总.docx

    首先,让我们来看看在ES5中使用Function实现单例模式的一种常见方法: ```javascript function User() { if (!(this instanceof User)) { return new User(); } this.name = '无名'; User._instance = this; }...

    闭包实现ztree增删改查

    在这里,我们将详细讨论如何利用闭包来优化ZTree的性能,实现更高效的操作。 首先,让我们理解一下闭包的基本原理。闭包允许一个函数访问并操作外部函数的作用域中的变量,同时保持这些变量的状态。在JavaScript中...

    JavaScript设计模式之单例模式原理与用法实例分析

    在JavaScript中,由于其特殊的运行环境和语法特性,实现单例模式有多种方式,包括传统的立即执行函数结合闭包、惰性单例等。 首先,理解单例模式的定义:它保证了一个类只有一个实例,而且提供了全局访问该实例的...

    C语言实现三种闭包算法(传递,自反,对称闭包)

    这里我们将详细讨论如何用C语言实现传递闭包、自反闭包和对称闭包这三种闭包算法。 首先,我们需要理解这些闭包的定义: 1. **传递闭包**:在一个关系集合中,如果对于所有的元素a、b和c,只要a与b有关系且b与c有...

    Swift语言利用Closure闭包实现反向传值Demo

    在本Demo“Swift语言利用Closure闭包实现反向传值Demo”中,我们将深入探讨如何利用闭包在两个视图控制器之间实现数据的反向传递。 首先,理解闭包的基本概念。闭包本质上是一个函数,它可以访问并修改其外部作用域...

    JavaScript实现单例模式实例分享

    本文将详细讲解如何用JavaScript实现单例模式,包括传统的实现方法、利用闭包的实现方法以及惰性单例的实现。 在传统的单例模式中,通常会有一个全局变量来标志一个类是否已经创建过实例。如果已经创建了实例,则在...

    传递闭包实现

    根据给定文件的信息,我们可以深入探讨“传递闭包”的概念及其在计算机科学中的实现方法。 ### 传递闭包的概念 传递闭包(Transitive Closure)是集合论中的一个概念,指的是在集合\(X\)上的一类特殊的二元关系。...

    swift-闭包、通知、协议、单例简单使用、界面传值

    博客地址 http://blog.csdn.net/qq_26598821/article/details/51254224 GitHub地址 ...swift语言的闭包(block)通知,协议,单例的简单使用。该demo较清晰得介绍四种方式的书写,简洁明了。

    Swift语言采用Closure闭包实现反向传值Demo

    在这个"Swift语言采用Closure闭包实现反向传值Demo"中,我们将深入探讨如何使用闭包在两个视图控制器之间进行反向数据传递,以及它与Blocks的异同。 首先,让我们了解什么是闭包。闭包是能够捕获和存储其所在上下文...

    layer.rar 使用js 闭包封装的原生提示模态框

    在这个提示模态框的实现中,闭包可能被用来确保模态框的状态(例如是否显示、内容等)不会被外部代码意外修改,同时还能在多次调用时保持其内部状态。 接下来,HTML和CSS是构建网页内容和样式的基石。在这个模态框...

    js闭包理解之倒计时

    在这个“js闭包理解之倒计时”的主题中,我们将深入探讨如何利用闭包实现一个实际项目中的倒计时功能。 首先,让我们了解一下闭包的基本概念。在JavaScript中,每当函数被创建时,它都会形成一个闭包,这个闭包包含...

    ios demo,dispatch_once,单例模式的应用

    总结起来,`dispatch_once`和单例模式是iOS开发中的重要工具,它们帮助开发者实现代码的线程安全初始化和全局唯一实例的管理。理解并熟练运用这些概念,能够提高代码质量,优化性能,同时减少潜在的并发问题。在`...

    传递闭包的实现 C语言

    总的来说,传递闭包在C语言中的实现是通过迭代更新关系矩阵来完成的,Warshall算法是实现这一过程的常见方法。理解传递闭包的概念及其计算方法,对于理解和解决图论问题以及关系推理问题至关重要。

    JavaScript利用闭包实现模块化

    总的来说,JavaScript的闭包是实现模块化的核心工具。通过创建私有作用域和返回内部函数,我们可以构建出具有封装性和复用性的模块,这对于大型的JavaScript项目尤其重要。理解并熟练掌握闭包和模块化原理,能够帮助...

    传递闭包的C语言编程实现

    离散数学中传递闭包是用Warshall算法求的,此程序正式这种算法的C语言实现

    Python闭包实现计数器的方法

    本文实例讲述了Python闭包实现计数器的方法。分享给大家供大家参考。具体实现方法如下: 先来看看专业的解释:闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将...

    基于JavaScript实现单例模式

    在JavaScript中,由于其动态特性和全局作用域,实现单例模式需要巧妙地运用闭包。 首先,我们要理解单例模式的三个关键点: 1. 只能有一个实例。 2. 单例类必须自己创建自己的唯一实例。 3. 单例类必须给所有其他...

Global site tag (gtag.js) - Google Analytics