bootstrap插件学习-bootstrap.alert.js

 

咱们先看bootstrap.alert.js的结构bootstrap

var dismiss = '[data-dismiss="alert"]' //自定义属性
Alert = function ( el ){} // 构造器
Alert.prototype ={} // 构造器的原型
$.fn.alert = function ( option ){} //jQuery原型上自定义的方法
$.fn.alert.Constructor = Alert // 重写jQuery原型方法popover的构造器名
$(function (){} // 初始化

HTML结构api

<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将指向触发事件的对象。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的样式表。spa

 内容很少,时间恰好,以上是个人一点读码体会,若有错误,请指出,你们共通学习。prototype

相关文章
相关标签/搜索