bootstrap插件学习-bootstrap.alert.js
我们先看bootstrap.alert.js的结构
var dismiss = '[data-dismiss="alert"]' //自定义属性
Alert = function ( el ){} // 构造器
Alert.prototype ={} // 构造器的原型
$.fn.alert = function ( option ){} //jQuery原型上自定义的方法
$.fn.alert.Constructor = Alert // 重写jQuery原型方法popover的构造器名
$(function (){} // 初始化
HTML结构
<div class="alert fade in">
<a class="close" href="#" data-dismiss="alert">×</a>
<strong>警告!</strong>
在贵国遵守宪法就要违反刑法。
</div>
<div class="alert alert-block alert-error fade in">
<a class="close" href="#" data-dismiss="alert">×</a>
<h4 class="alert-heading">微博控们注意了!</h4>
<p> 出游微博晒幸福时,最好不要泄露出游时间、人数,别泄露住址,谨慎晒出游照片,以免让贼判断出你家是否有人。因为小偷说不定会盯上你的微博,“随着微博的发展,贼也很时尚啊!” </p>
<p>
<a class="btn btn-danger" href="#">接受建议</a>
<a class="btn" href="#">不当回事</a>
</p>
</div>
alert插件,比较简单。我们先从初始化开始
/*
* 初始化
* */
$(function () {
$('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
})
body去监听所有拥有data-dismiss = 'alert'属性的标签,并为它们绑定上Alert原型上的close方法,注意这里没有使用之前的$.proxy()方法,保持作用域,那我们进入这个方法后,方法内的this将指向触发事件的对象。
close: function ( e ) {
var $this = $(this)//获取触发click事件的对象
, selector = $this.attr('data-target')
, $parent
/*
* 如果没有data-target属性值,将获取标签a的href值
* */
if (!selector) {
selector = $this.attr('href')
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
}
$parent = $(selector)//没有获得对象
$parent.trigger('close')
e && e.preventDefault()//阻止冒泡
//获取父节点
$parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
$parent
.trigger('close')
.removeClass('in')
//删除父对象,alert的样式在父节点上
function removeElement() {
$parent
.trigger('closed')
.remove()
}
//没有引入相应js,这里默认执行removeElement方法
$.support.transition && $parent.hasClass('fade') ?
$parent.on($.support.transition.end, removeElement) :
removeElement()//默认执行
}
里面的执行步骤跟之前插件很相似,很多就不说了,这个方法阻止了冒泡,最后删除了被点击标签的父节点。想看alert样式的,可以浏览一下bootstrap的样式表。
内容不多,时间刚好,以上是我的一点读码体会,如有错误,请指出,大家共通学习。
bootstrap插件学习-bootstrap.alert.js的更多相关文章
- bootstrap插件学习-bootstrap.dropdown.js
bootstrap插件学习-bootstrap.dropdown.js 先看bootstrap.dropdown.js的结构 var toggle = '[data-toggle="drop ...
- bootstrap插件学习-bootstrap.modal.js
bootstrap插件学习-bootstrap.modal.js 先从bootstrap.modal.js的结构看起. function($){ var Modal = function(){} // ...
- bootstrap插件学习-bootstrap.scrollspy.js
先看bootstrap.dropdown.js的结构 function ScrollSpy(){} //构造函数 ScrollSpy.prototype = {} //构造器的原型 $.fn.scro ...
- bootstrap插件学习-bootstrap.typehead.js
先看bootstrap.typehead.js的结构 var Typeahead = function ( element, options ){} //构造器 Typeahead.prototype ...
- bootstrap插件学习-bootstrap.carousel.js
先看bootstrap.carousel.js的结构 var Carousel = function (element, options){} //构造器 Carousel.prototype = { ...
- bootstrap插件学习-bootstrap.collapse.js
先看bootstrap.collapse.js的结构 var Collapse = function ( element, options ){} // 构造器 Collapse.prototype ...
- bootstrap插件学习-bootstrap.button.js
先看bootstrap.button.js的结构 var Button = function ( element, options ){} //构造器 Button.prototype = {} // ...
- bootstrap插件学习-bootstrap.popover.js
先看bootstrap.popover.js的结构 var Popover = function ( element, options ){} //构造器 Popover.prototype = {} ...
- bootstrap插件学习-bootstrap.tooltip.js
先看bootstrap-tooltip.js的结构 var Tooltip = function ( element, options ){} // 构造器 Tooltip.prototype ={} ...
随机推荐
- 聊聊 App Store 的产品和推广运营攻略
在这个工匠的时代,越来越多开发者投入了手机应用的开发圈子.如何才能在激烈的竞争中脱颖而出,少走弯路呢?我们跟空中网负责iPhone游戏的运营和推广的洪亮进行了一次交流,得到了不少经验和诀窍,值得分享给 ...
- PHP实现微信公众账号开发
1.首先需要一个可以外网访问的接口url. 我这里是申请的新浪免费云服务器,http://xxxxx.applinzi.com/wx.php,具体自己可以去新浪云中心申请地址为:http://www. ...
- C#Winform程序如何发布并自动升级(图解)
C#Winform程序如何发布并自动升级(图解) 有不少朋友问到C#Winform程序怎么样配置升级,怎么样打包,怎么样发布的,在这里我解释一下打包和发布 关于打包的大家可以看我的文章C# w ...
- AsyncTask实现断点续传
之前公司里面项目的下载模块都是使用xUtils提供的,最近看了下xUtils的源码,它里面也是使用AsyncTask来执行异步任务的,它的下载也包含了断点续传的功能.这里我自己也使用AsyncTask ...
- HTML5手机APP开发入(5)
HTML5手机APP开发入(5) 回顾一下 HTML5手机APP开发入(4) 如何自定义Component,directive HTML5手机APP开发入(3) 如何实现MVC的代码重构,自定义一个P ...
- Docker实践(6)—CentOS7上部署Kubernetes
Kubernetes架构 Kubernetes的整体架构如下: Master为主控节点,上面运行apiserver,scheduler,controller-manager等组件.Minion相当于工 ...
- eclipse web项目转maven项目
ps:好久没写博客了,工作了人就懒了,加油加油,up,up 1 eclipse web项目目录 /web app src com.xx.xx *.properties *.xml WebRoot W ...
- ubuntu bless 16字节每行
打开Preferences配置 输入路径:/usr/share/bless/bless-16-bytes-per-row.layout 或者使用以下配置 cat /home/scue/.config/ ...
- vc 实现打印功能
Visual C++6.0是开发Windows应用程序的强大工具,但是要通过它实现程序的打印功能,一直是初学者的一个难点,经常有朋友询问如何在VC中实现打印功能,他们往往感到在MFC提供的框架内实现这 ...
- 注入器和发布库--AngularJS学习笔记(三)
AngularJS的一大特性就是Module的加载和依赖注入,本文将分析一下loader.js和最后这些代码文件是怎么组织和运行的. Loader.js 该文件中只有setupModuleLoader ...