BootStrap Tooltip插件源码解析
(编辑:jimmy 日期: 2025/10/28 浏览:3 次 )
Tooltip插件可以让你把要显示的内容以弹出框的形式来展示,如:
因为自己在工作的过程中,用到了Tooltip这个插件,并且当时正想学习一下元素定位的问题,如:提示框显示的位置就是触发提示框元素的位置,可以配置在上、下、左、右等位置,所以就去看了源码。对于整个插件源码没有看全,但也学到了许多的知识点。能力有限,可能其中有认识错误的地方,以后再补充吧
1 使用方法不介绍 ,可以参照
Bootstrap 提示工具(Tooltip)插件
2 源码解析
+function ($) {
'use strict';
// TOOLTIP PUBLIC CLASS DEFINITION
// ===============================
var Tooltip = function (element, options) {
this.type =
this.options =
this.enabled =
this.timeout =
this.hoverState =
this.$element = null
this.init('tooltip', element, options)
}
Tooltip.VERSION = '3.3.0'
Tooltip.TRANSITION_DURATION = 150
//默认参数
Tooltip.DEFAULTS = {
animation: true,
placement: 'top',
selector: false,
template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
trigger: 'hover focus',
title: '',
delay: 0,
html: false,
container: false,
viewport: {
selector: 'body',
padding: 0
}
}
//初始化
Tooltip.prototype.init = function (type, element, options) {
this.enabled = true
this.type = type
this.$element = $(element)
//初始化参数
this.options = this.getOptions(options)
this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)
//多个触发器 即触发函数
var triggers = this.options.trigger.split(' ')
for (var i = triggers.length; i--;) {
var trigger = triggers[i]
if (trigger == 'click') {
//绑定事件处理程序
//事件命名空间 'click.tooltip'
//触发时执行$.proxy(this.toggle, this)返回的函数
this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
} else if (trigger != 'manual') {
var eventIn = trigger == 'hover' "auto"
var autoToken = /\s"auto"时
if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
$tip
//detach() 删除匹配的对象 与remove()不同的是,所有绑定的事件、附加的数据等都会保留下来
.detach()
.css({ top: 0, left: 0, display: 'block' })
.addClass(placement)
.data('bs.' + this.type, this)
//参数 container 向指定元素添加该提示框
//没有 添加到当前元素后面
this.options.container "tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>
Tooltip.prototype.tip = function () {
return (this.$tip = this.$tip || $(this.options.template))
}
Tooltip.prototype.arrow = function () {
return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
}
Tooltip.prototype.enable = function () {
this.enabled = true
}
Tooltip.prototype.disable = function () {
this.enabled = false
}
Tooltip.prototype.toggleEnabled = function () {
this.enabled = !this.enabled
}
//click 事件触发时执行的函数
Tooltip.prototype.toggle = function (e) {
//this tooltip实例对象
var self = this
if (e) {
//e.currentTarget 返回注册该事件处理程序的元素
self = $(e.currentTarget).data('bs.' + this.type)
if (!self) {
self = new this.constructor(e.currentTarget, this.getDelegateOptions())
$(e.currentTarget).data('bs.' + this.type, self)
}
}
//判断提示框当前的状态
//true 当前显示 需要隐藏
//false 相反
self.tip().hasClass('in') "#aa").tooltip().noConflict();
$.fn.tooltip.noConflict = function () {
$.fn.tooltip = old
return this
}
}(jQuery);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
下一篇:获取当前月(季度/年)的最后一天(set相关操作及应用)
