摘要:调用当我们调用的时候,就会调用源码中函数,遍历所有的警告框,并关闭。解除警告框点击关闭事件,传入对应的事件命名空间即可
1、先附上alert的源代码
将Alert放在自执行函数中,避免变量污染
/* ==================================================================== * Bootstrap: alert.js v3.3.7 * http://getbootstrap.com/javascript/#alerts * ==================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { "use strict"; //使用严格模式 执行js代码 var dismiss = "[data-dismiss="alert"]" //alert警告框事件选择器 var Alert = function (el) { //alert警告框构造函数 $(el).on("click", dismiss, this.close)//选择器绑定点击关闭alert警告框的事件 } Alert.VERSION = "3.3.7"//版本 Alert.TRANSITION_DURATION = 150//过渡时间 为了让警告框在关闭时表现出动画效果 Alert.prototype.close = function (e) {//在alert原型上添加close方法 var $this = $(this)//当前对象包装成jquery对象 var selector = $this.attr("data-target") //获取jquery对象的date-target属性值 if (!selector) {//如果没有获取到 selector = $this.attr("href")//获取href属性值 selector = selector && selector.replace(/.*(?=#[^s]*$)/, "") // strip for ie7 } var $parent = $(selector === "#" ? [] : selector)//如果selector是#则返回空数组,返回自身 if (e) e.preventDefault()//取消事件的默认动作 a标签的链接不会打开 if (!$parent.length) { $parent = $this.closest(".alert")//找到祖先中类名为alert的元素 } $parent.trigger(e = $.Event("close.bs.alert"))//触发自定义的close.bs.alert事件 //并将e重新复制 if (e.isDefaultPrevented()) return //e被重新赋值为jquery事件对象 e.isDefaultPrevented()值为false 不会走return语句 $parent.removeClass("in")//删除具有动画效果的 类 function removeElement() { // detach from parent, fire event then clean up data //detach删除匹配元素,但是不从jquery对象上删除 //remove删除元素,元素对应的事件,数据,全部移除 //元素动画效果结束后触发closed.bs.alert事件,并移除 $parent.detach().trigger("closed.bs.alert").remove() } //探测浏览器是否支持transition,以及祖先元素是否包含fade类,如果都支持, //在关闭alert警告框时,会有动画效果,如果不支持则直接删除 $.support.transition && $parent.hasClass("fade") ? $parent .one("bsTransitionEnd", removeElement) .emulateTransitionEnd(Alert.TRANSITION_DURATION) : removeElement() } //对外暴露的函数 function Plugin(option) { return this.each(function () { var $this = $(this) //获取元素上设置的数据 var data = $this.data("bs.alert") //如果没有对应的设置数据,则重新设置 if (!data) $this.data("bs.alert", (data = new Alert(this))) //判断传入的option是否为String类型,是则调用Alert实例的对应方法 if (typeof option == "string") data[option].call($this) }) } //保存一份alert引用 var old = $.fn.alert //jquery实例上的alert方法,当调用该方法是遍历所有的选中的元素,设置对应的data,并调用其原型的close方法, $.fn.alert = Plugin $.fn.alert.Constructor = Alert //当alert方法冲突时,调用次方法避免冲突 $.fn.alert.noConflict = function () { $.fn.alert = old return this } //在document上绑定事件 ,通过jquery的off方法,可以解除该事件 $(document).on("click.bs.alert.data-api", dismiss, Alert.prototype.close) }(jQuery);
2、使用
警告!请不要提交。× 错误!请进行一些更改。
3、调用
当我们调用
$(".alert").alert("close")
的时候,就会调用源码中Plugin函数,遍历所有的警告框,并关闭。
4、解除警告框点击关闭事件,传入对应的事件命名空间(namespace)即可
$(document).off(".bs.alert.data-api")
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/90034.html
摘要:原文来自集前端最近很火的框架资源定时更新,欢迎一下。推送自己整理近期三波关于的资讯这里就抛砖引玉了,望有更屌的资源送助攻。 原文来自:集web前端最近很火的vue2框架资源;定时更新,欢迎Star一下。 推送自己整理近期三波关于Vue.js的资讯; 这里就抛砖引玉了,望有更屌的资源送助攻。 showImg(https://segmentfault.com/img/bVVeiZ); 第...
摘要:简单说明原理使用实现按需引入打包。这里采用多入口配置,实现各个功能模块分别打包成一个文件,并使用将样式进行抽离后,按入口进行打包为对应的文件。只要在指定入口名为。这个相关配置已经发布了包。 简单说明原理: 使用babel-plugin-component实现按需引入、打包。将webpack配置成多入口,保证最终打包的目录结构符合babel-plugin-component插件的要求,实...
摘要:今天我就来讲讲插件的使用,它是如何实现列表表头自定义显示字段的,我把我的经验分享出来,满足一下不懂英语的人,给你们搭个快车。需求分析实现列表表头自定义显示字段,自定义表头排序。 序言 Yii2框架的扩展性能真的很不错,很多效果都可以通过插件去实现,你想不到的老外都帮你想好了,于是,人群中就流传了这么一句话:效果不会写不要紧,会用插件也不错。GitHub是一个庞大而且开放的资源库,平时有...
摘要:类用于宽度,占据全部视口的容器。通过行在水平方向创建一组列。通过为列设置属性,从而创建列与列之间的间隔。 上次课内容:什么JQ : write less do more 写更少的代码,做更多的事情 javascript函数库 基本选择器: ID选择器: #ID名称 类选择器: .类名 元素选择器: 元素的名称 通配符选择器: * 找出页面上...
摘要:类用于宽度,占据全部视口的容器。通过行在水平方向创建一组列。通过为列设置属性,从而创建列与列之间的间隔。 上次课内容:什么JQ : write less do more 写更少的代码,做更多的事情 javascript函数库 基本选择器: ID选择器: #ID名称 类选择器: .类名 元素选择器: 元素的名称 通配符选择器: * 找出页面上...
阅读 964·2023-04-26 02:56
阅读 9437·2021-11-23 09:51
阅读 1850·2021-09-26 10:14
阅读 2980·2019-08-29 13:09
阅读 2154·2019-08-26 13:29
阅读 571·2019-08-26 12:02
阅读 3562·2019-08-26 10:42
阅读 3000·2019-08-23 18:18