我们先看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的更多相关文章

  1. bootstrap插件学习-bootstrap.dropdown.js

    bootstrap插件学习-bootstrap.dropdown.js 先看bootstrap.dropdown.js的结构 var toggle = '[data-toggle="drop ...

  2. bootstrap插件学习-bootstrap.modal.js

    bootstrap插件学习-bootstrap.modal.js 先从bootstrap.modal.js的结构看起. function($){ var Modal = function(){} // ...

  3. bootstrap插件学习-bootstrap.scrollspy.js

    先看bootstrap.dropdown.js的结构 function ScrollSpy(){} //构造函数 ScrollSpy.prototype = {} //构造器的原型 $.fn.scro ...

  4. bootstrap插件学习-bootstrap.typehead.js

    先看bootstrap.typehead.js的结构 var Typeahead = function ( element, options ){} //构造器 Typeahead.prototype ...

  5. bootstrap插件学习-bootstrap.carousel.js

    先看bootstrap.carousel.js的结构 var Carousel = function (element, options){} //构造器 Carousel.prototype = { ...

  6. bootstrap插件学习-bootstrap.collapse.js

    先看bootstrap.collapse.js的结构 var Collapse = function ( element, options ){} // 构造器 Collapse.prototype ...

  7. bootstrap插件学习-bootstrap.button.js

    先看bootstrap.button.js的结构 var Button = function ( element, options ){} //构造器 Button.prototype = {} // ...

  8. bootstrap插件学习-bootstrap.popover.js

    先看bootstrap.popover.js的结构 var Popover = function ( element, options ){} //构造器 Popover.prototype = {} ...

  9. bootstrap插件学习-bootstrap.tooltip.js

    先看bootstrap-tooltip.js的结构 var Tooltip = function ( element, options ){} // 构造器 Tooltip.prototype ={} ...

随机推荐

  1. Codeforces Round #379 (Div. 2) 总结分享

    前言 初入acm的新手,打算在cf混.这几天没有比赛,就做了个最新的Virtual participation.虽然说div2比较简单,但还是被虐得体无完肤...Orz.两个小时,共6道题.最后只AC ...

  2. iOS 日志

    去掉日志 #ifndef __OPTIMIZE__ #define NSLog(...) NSLog(__VA_ARGS__) #else #define NSLog(...){} #endif 打开 ...

  3. The main difference between Java & C++(转载)

    转载自:http://stackoverflow.com/questions/9192309/the-main-difference-between-java-c C++ supports point ...

  4. fidder 抓 https包配置方法(ios & android & pc浏览器)

    1. fidder抓https包的基本配置,可参见以下博文 http://blog.csdn.net/idlear/article/details/50999490 2. 遇到问题:抓包看只有Tunn ...

  5. vs2010 使用vs online账号 需要安装的插件

    VS10SP1-KB2662296.exe http://pan.baidu.com/s/1qWDpEG0 vs2010 需要先升级到SP1

  6. asp 时间倒数后按钮可用

    <asp:Button runat="server" ID="btn" Text="免费获取验证码" onclick="bt ...

  7. 菜鸟学JS(五)——window.onload与$(document).ready()

    我们继续说JS,我们常常在页面加载完成以后做一些操作,比如一些元素的显示与隐藏.一些动画效果.我们通常有两种方法来完成这个事情,一个就是window.onload事件,另一个就是JQuery的read ...

  8. ecshop利用.htaccess实现301重定向的方法

    实现方法如下(空间必须支持对目录中的.htaccess文件解析) 打开 .htaccess 找到 RewriteEngine on 它的下方添加 RewriteCond %{HTTP_HOST} ^需 ...

  9. 使用Ant编译提示Class not found: javac1.8

    无论是使用Eclipse还是使用Ant命令,都可能会在编译时遇到提示:Class not found: javac1.8 今天用Ant打包Android,apk,运行出现了batch_build.xm ...

  10. ooofc.com域名备案问题导致无法正常访问临时解决方案

    各位尊敬的easyradius用户: 由于临时收到ooofc.coom域名备案被删除的消息,之后ooofc.com就无法访问.导致用户无法访问控制台oa.ooofc.com,及用户中心user.ooo ...