jQuery插件实例一:年华时代插件Alert对话框
在工作中使用jQuery插件相信对于程序员来说非常普遍,在网络上也有很多优秀的插件可供大家使用,功能非常强大。在之前用过的一些插件中,有些太过追求功能的强大和可配置性,造成使用的复杂度上升。个人认为与其做一个大而全的插件,不如做一个有限通用性、小巧、方便的插件来得实用,在一个网页中进行这个网页要用的功能插件,而一个插件的几K或十几K大少对于服务器来说完全可以忽略。因此我总则了自己开发插件的一个原则,对于一个特定功能的插件:
插件原则:少配置,限通用性,方便快捷部署
从这篇开始,将会把自己写的插件写到网上,方便今后随时可以使用,做为一名ASP.NET程序员,如果大家在文中发现了错误、不恰当的地方,还请留言多多指正。
这篇文中介绍的这个插件的效果类似于JS中的alert(“ ”);函数,按钮部分可以为文字搭配背景颜色,也可以使用图片,宽度与高度可配置。按照:少配置,限通用性,方便快捷部署的原则,只使用:$("#t1").nhsdAlert({"content": "这个就是内容" });这行代码即可使用。在实例的项目应用中,整个网站风格保持一至,应此在正常情况下最多$("#t1").nhsdAlert({ "title": "操作提示2", "content": "这个就是内容2" });即可使用。
效果图:

代码:
;
(function ($, window, document, undefined) {
var defaults = {
'title': '',
'titleAlign': 'left',
'titleColor': '#df5066',
'content': '',
'contentMargin': '7px',
'buttonText': '确定',
'buttonWidth': '56px',
'buttonHeight': 'auto',
'buttonMargin': '20px 0 10px 90px',
'buttonColor': '#df5066',
'buttonFontSize': '1.2em',
'buttonFontColor': 'white',
'buttonBorder': '1px solid #df5066',
'isButtonImg': 'false',
'buttonImgUrl': '',
'bgColor': '#F8F8F8',
'width': '240px',
'height': 'auto',
'isTopRightCorner': 'true',
'isAutoHide': 'true',
'showTimeBySecond': '60',
'margin': '-50px 0 0 -120px',
'left': '50%',
'top': '50%',
'position': 'fixed',
'border': '2px solid #df5066;',
'shadeColor': '#FFCCFF',
'shadeOpacity': '.4',
'isTitle': true,
'isSure': true,//是否有确定按钮
'closeImgUrl': '/Images/Extend/cancel.png'
}; $.fn.nhsdAlert = function (options) {
var $parentDiv = $(this);
var $shadeDiv;
var $opts = $.extend({}, defaults, options);
var tMargin = parseInt($opts.width) / 2;
$opts.margin = '-50px 0 0 -' + tMargin + 'px';
$opts.buttonMargin = '20px 0 10px ' + (tMargin - (parseInt($opts.buttonWidth) / 2)) + 'px';
function appearanceStyle() {
$parentDiv.attr('style', 'z-index: 30000;font-size:12px;background-color:' + $opts.bgColor + ';width:' + $opts.width + ';height:' + $opts.height + ';margin:' + $opts.margin + ';left:' + $opts.left + ';top:' + $opts.top + ';position:' + $opts.position + ';border:' + $opts.border).show();
if ($opts.isTitle == true) {
var $title = $('<div></div>').html('<span style="text-align:' + $opts.titleAlign + '">' + $opts.title + '</span><img src=' + $opts.closeImgUrl + ' id="alert_close" style="float: right;cursor:pointer;"/>').appendTo($parentDiv);
$title.attr('style', 'line-height: 22px;font-weight: bold;text-indent: 5px;line-height: 22px;color:#fff;height:22px;background-color:' + $opts.titleColor);
}
$("#alert_close").bind('click', function() {
$parentDiv.html('').hide();
$shadeDiv.remove();
});
var $contentParentDiv = $('<div></div>').appendTo($parentDiv);
var $contentDiv = $('<div></div>').html($opts.content).appendTo($contentParentDiv);
$contentDiv.attr('style', 'font-size: 12px;margin:' + $opts.contentMargin + ';position:relative');
if ($opts.isSure == true) {
var $bottomDiv = $('<div></div>').appendTo($parentDiv);
$bottomDiv.attr('style', 'position: relative;');
var $bottomButton;
if ($opts.isButtonImg == 'false') {
$bottomButton = $('<div>' + $opts.buttonText + '</div>').appendTo($bottomDiv).bind('click', function () {
$parentDiv.html('').hide();
$shadeDiv.remove();
});
$bottomButton.attr('style', 'font-size: 12px;line-height: 25px;line-height: 22px;font-weight: bold;color:#fff;width:' + $opts.buttonWidth + ';height:' + $opts.buttonHeight + ';background-color:' + $opts.buttonColor + ';position: relative;cursor: pointer;text-align: center' + ';margin:' + $opts.buttonMargin + ';font-size:' + $opts.buttonFontSize + ';color:' + $opts.buttonFontColor + ';border:' + $opts.buttonBorder);
} else {
//按钮为图片
$bottomButton = $('<img src=' + $opts.buttonImgUrl + ' alt=""></img>').appendTo($bottomDiv).bind('click', function () {
$parentDiv.remove();
$shadeDiv.remove();
});
$bottomButton.attr('style', 'position: relative;cursor: pointer;' + ';margin:' + $opts.buttonMargin);
}
}
}
function shadeDiv() {
$shadeDiv = $('<div></div>').appendTo($('body'));
$shadeDiv.attr('style', 'top: 0;left: 0;margin: -8px;width: 104%;height: 104%;position: fixed;opacity:' + $opts.shadeOpacity + ';background-color: ' + $opts.shadeColor + ';z-index: 29999;');
}
shadeDiv();//遮罩层
appearanceStyle();//内容层
return this;
}
})(jQuery, window, document);
前台调用:
<html>
<head>
<meta name="viewport" content="width=device-width" />
<script src="~/Scripts/Extend/jquery-1.9.1.min.js"></script>
<script src="~/Scripts/Extend/json2.js"></script>
<script src="~/Scripts/Extend/nhsdAlert.js"></script>
<title>AlertZ</title>
<script type="text/javascript">
$(document).ready(function () {
var t = $("#t1").nhsdAlert({ "title": "操作提示", "content": "这个就是内容" });
$("#btn_t").bind('click', function () {
$("#t1").nhsdAlert({ "title": "操作提示2", "content": "这个就是内容2" });
});
$("#btn_t2").bind('click', function () {
$("#t1").nhsdAlert({ "title": "操作提示3", "content": "这个就是内容3" });
});
});
</script>
</head>
<body>
<div>
<div id="t1">
</div>
<input type="button" name="name" value="Alert第一个" id="btn_t" />
<input type="button" name="name" value="Alert第二个" id="btn_t2" />
<script type="text/javascript">
for (var i = 0; i < 200; i++) {
$('<p></p>').html('<a href="javascript:void(0);">' + i + '</a>').appendTo($('body'));
}
</script>
</div>
</body>
</html>
开篇说明:
1、开始的分号(;):这个分号写在开头是为了避免网页文档之前代码语句没有结束,保证这上闭包完整性而写,通常请不要省略。
2、function ($, window, document, undefined),这是为了把全局参数传过来,如果在调用这个插件之前改变了JS默认代码功能,这这样写就可以保证在插件中使用的是JS原生window对象参数。
3、jQuery插件基本格式:
;
(function ($, window, document, undefined) {
var defaults = {
'key': 'value'
}; $.fn.nhsdAlert = function (options) {
var $parentDiv = $(this);
$parentDiv.html("");
var $opts = $.extend({}, defaults, options); return this;
}
})(jQuery, window, document);
PS:
欢迎加群: 258387392 讨论交流。
jQuery插件实例一:年华时代插件Alert对话框的更多相关文章
- jQuery插件实例二:年华时代插件ReturnTop回到首页
这个插件功能在于当网页内容高度很高时,方便用户快速回到顶部.核心在于对屏幕高度的获取,定时器的使用,在引用代码后,只使用$.nhsd.returnTop();即可实现效果 效果图: 代码: ; fun ...
- 一个很简单的jQuery插件实例教程(菜鸟级)
很多公司的前端设计开发人员都是女孩子,而这些女孩子很多JavaScript技能都不是很好.而前端开发过程中,JavaScript技能又是必不可少的.所以,如果前端小MM正在为某个JavaScript效 ...
- 简单的 jQuery 浮动层随窗口滚动滑动插件实例
写了一个非常简单的 jQuery 插件实例 浮动层随窗口滚动滑动 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional/ ...
- jQuery插件实例五:手风琴效果[动画效果可配置版]
昨天写了个jQuery插件实例四:手风琴效果[无动画版]那个是没有动画效果的,且可配置性不高,本篇为有动画效果.对于一些数据做了动态的计算,以实现自适应. 欢迎大家入群相互交流,学习,新群初建,欢迎各 ...
- 【jQuery小实例】js 插件 查看图片
---本系列文章所用使用js均可在本博客文件中找到. 像淘宝一样,鼠标放在某一件商品上,展示大图信息,甚至查看图片的具体部位.给人超炫的效果,这种效果实现基于js文件和js插件.大致可以分为三步,添加 ...
- Jquery.validate.js表单验证插件的使用
作为一个网站web开发人员,以前居然不知道还有表单验证这样好呀的插件,还在一行行写表单验证,真是后悔没能早点知道他们的存在. 最近公司不忙,自己学习一些东西的时候,发现了validation的一个实例 ...
- Bootstrap 历练实例-轮播(carousel)插件的事件
事件 下表列出了轮播(Carousel)插件中要用到的事件.这些事件可在函数中当钩子使用. 事件 描述 实例 slide.bs.carousel 当调用 slide 实例方法时立即触发该事件. $(' ...
- Jquery mobiscroll 移动设备(手机)wap日期时间选择插件以及滑动、滚动插件
Jquery Mobiscroll是一个用于触摸设备(Android phones, iPhone, iPad, Galaxy Tab)的日期和时间选择器jQuery插件.以及各种滑动插件 可以让用户 ...
- Jquery UI 和Easy UI常用插件
一.Jquery的插件简介 (一)什么是插件 插件(Plug-in)是一种遵循一定的应用程序接口规范编写出来的程序,是原有系统平台或应用软件平台功能的一种扩展和补充. 注意!!其只能在程序规定的系统平 ...
随机推荐
- 代码轮子之很简单但是挺管用的基于C# Task的模拟并发的代码
代码轮子之很简单但是挺管用的基于C# Task的模拟并发的代码
- c# 字符串(含有汉字)转化为16进制编码(转)
public static string Str2Hex(string s) { string result = string.Empty; byte[] arrByte = System.Text. ...
- jsp页面el表达式不起作用
web.xml中2.4版本的默认导入的standerd.jar,和jstl.jar是使用el表达式的包是启动的而2.5版本的web.xml中默认是关闭的所以在2.5的所有jsp中需要启动一下用< ...
- WinForm中使用AnyCAD三维控件 の 初始化
在WinForm中可以方便的集成AnyCAD.Net三维控件,只需要以下几部即可完成. 一.添加DLL程序集 AnyCAD.Foundation.Net.dll AnyCAD.Presentation ...
- 捣蛋phpwind之WindFrameWork
一直都有关注phpwind这个开源产品,从9.0开始就好关注拉,因为官方说把之前的代码重写了一遍,融入了windFramework这个框架,代码真的挺优美的,今日在做社区的一些功能,心血来潮就参考了p ...
- wp仿系统截图
wp上直接调用CameraCaptureTask,并没有参数设置截图大小,刚好项目需求要截成正方型,于是写了个仿系统截图的demo出来. 截图如下: 需要做的逻辑运算为: 1.初始化照片时:判 ...
- 快速清理Visual Studio起始页最近打开项目
清除vs2008起始页最近打开项目 第一种:最简单的方式: 把以下内容保存为.bat批处理文件 @echo off@REG Delete HKCU\Software\Microsoft\VisualS ...
- Overview Of Portal Registry And Content References
Portal Registry Each portal is defined by a portal registry.A portal registry has a tree-like struc ...
- DataGridView取消默认选中行
DataGridView在添加数据后会默认选中第 一个单元格或者第一行,我就想取消它的默认选中行.在DataGridView绑定数据之后加上了ClearSelection().这样一来,不论是启动窗体 ...
- [leetcode]_Pascal's Triangle II
题目:Pascal三角的变形,要求只用O(K)的额外空间. 思路:由于Pascal三角中,tri[n][i] = tri[n - 1][i] + tri[n-1][i-1],(通常情况下) 如果已经获 ...