基于jquery的自定义显示消息数量

2023-11-10

根据需求简单的实现一个小功能控件,暂时不支持扩展

$("xxxxxxx").iconCountPlugin(options, start, isOffset) {//三个参数,自定义样式,是否禁止图标位置随浏览器窗口变化而变化,是否禁用偏移量
这个是调用,后面俩参数可以根据需求自行进行调整,以兼容不同的浏览器,可能因为浏览器之间的差异导致出一些意想不到的错误.
;
(function ($, window, document, undefined) {
var inforCountShow = function (target, option, isOffset) {
this.$element = target;
var str = "<span class = 'infor-count'></span>";
var offsetleft = $(this.$element).offset().left;
var offsetTop = $(this.$element).offset().top;
var targetWidth = $(this.$element).width();
var targetHeight = $(this.$element).height();
var left = "",
top = "";
if (!isOffset) {
left = offsetleft + targetWidth - 18;
top = offsetTop - 5;
} else {
left = targetWidth + 13;
top = targetHeight - 3;
}
$(this.$element).after(str);
this.defaults = {
'display': 'inline-block',
'width': '18px',
'height': '18px',
'position': 'absolute',
'backgroundColor': '#f43530',
'color': '#fff',
'borderRadius': '15px',
'textAlign': 'center',
'fontSize': '12px',
"left": left,
"top": top,
"cursor": 'auto',
'margin':'auto'
};
this.options = $.extend({}, this.defaults, option);
this.createdDom = $(str);
}
inforCountShow.prototype = {
//手动设置
changeStyle: function () {
return $(this.$element).next().css({
'display': this.options.display,
'width': this.options.width,
'height': this.options.height,
'position': this.options.position,
'backgroundColor': this.options.backgroundColor,
'color': this.options.color,
'borderRadius': this.options.borderRadius,
'zIndex': this.options.zIndex,
'textAlign': this.options.textAlign,
'fontSize': this.options.fontSize,
"left": this.options.left,
"top": this.options.top,
'lineHeight': this.options.lineHeight,
"cursor": this.options.cursor,
"margin": this.options.margin
});
},
//浏览器窗口大小改变自适应,默认生效
onResize: function (target, isOffset) {
$(window).resize(function () {
var newOffsetleft = $(target).offset().left;
var newOffsetTop = $(target).offset().top;
var newTargetWidth = $(target).width();
var newTargetHeight = $(target).height();
var newleft = "", newTop = "";
if (!isOffset) {
newleft = newOffsetleft + newTargetWidth - 18;
newTop = newOffsetTop - 5;
} else {
newleft = newTargetWidth + 13;
newTop = newTargetHeight - 3;
}
$(target).next().css({
"left": newleft,
"top": newTop
});
});
},
//数值溢出,当消息数量超过99时显示 "..."
valueOverflow:function() {
var value = $(this.$element).next().text();
if (null != value && value>99) {
$(this.$element).next().text("...");
}
},

//绑定事件,可以接受事件对应外部方法
bindEvent: function () {
var that = this;
if (!that.createdDom) return;
this.createdDom.off('click').on('click', function () {
if (that.options.click) {
// that.options.click();
} else {

}
});
}
}
//调用
$.fn.iconCountPlugin = function (options, start, isOffset) {//三个参数,自定义样式,是否禁止图标位置随浏览器窗口变化而变化,是否禁用偏移量
return $(this).each(function () {
var infor = new inforCountShow(this, options, isOffset);
if (!start) {
infor.onResize(this, isOffset);
}
infor.changeStyle();
infor.valueOverflow();
infor.bindEvent();

});
}

})(jQuery, window, document);

 此插件是笔者当时刚学习封装控件时的初次尝试,希望大佬们勿喷,有时间会把他进行优化,欢迎各位大神一起讨论.您的点赞是我最好的动力.

 

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/liucldq/p/8064146.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于jquery的自定义显示消息数量 的相关文章

  • 在 Node.js 中一次迭代 50 个项目的数组

    我是 node js 的新手 目前正在尝试编写数组迭代代码 我有一个包含 1 000 个项目的数组 由于服务器负载问题 我想一次迭代 50 个项目的块 我目前使用 forEach 循环 如下所示 我希望将其转换为上述块迭代 result i
  • 如何在 Adob​​e Brackets 中使用 const 和 let 禁用 JSLint ES6 错误?

    我用 Google 搜索并浏览了这个网站 但我只能找到 JSHint 而不是 JSLint 的答案 为了摆脱 use function form of use strict 错误 我添加了 jslint node true 但要禁用使用错误
  • 在 Nodejs/javascript 中的 Excel 中创建动态数量的列或标题

    我用过exceljsNodejs中用于将json数据导出到excel的模块 它工作正常 但必须在添加行之前预定义标题 列的名称 即列是固定的 添加行后 我无法动态添加列 我尝试了许多通过 npm 提供的模块 但它们都具有相同的功能 那么 有
  • flexslider 中的 GIF 滑块,如何仅在滑块上时开始 gif

    现在我有一个带有四个幻灯片的 Flexslider 第三个滑块是 gif 而不是像其他滑块一样是 jpg 我遇到的问题是 第三个 gif 滑块显然在到达页面时立即启动 而不是在您实际到达该滑块时启动 当点击前两个滑块时 gif 就快完成了
  • Karma + JSPM + Typescript - 未找到“.ts.js”

    主要只是想让 Karma JSPM 在加载 ts 文件时发挥良好作用 但绝对没有运气 我看到一个讨论库 https github com Larchy karma jspm typescript coverage tree master一个
  • 代理递归函数

    想象一个简单的递归函数 我们试图包装它以检测输入和输出 A simple recursive function const count n gt n 1 count n 1 Wrap a function in a proxy to ins
  • 用于匹配重复子字符串的单个js正则表达式?

    假设我有一个字符串 例如 where is mummy where is daddy 我想用空字符串替换任何一组重复子字符串 所以在这种情况下where and is元素将被删除 结果字符串将是 mummy daddy 我想知道是否有任何单
  • React 功能组件:作为函数调用与作为组件调用

    假设我有一个功能组件 const Foo props gt div props name div 直接作为函数调用有什么区别 const fooParent gt div Foo name foo div 与将其称为组件相比 const f
  • 名称属性的 CSS 选择器?

    这可能是一个愚蠢的问题 但是属性的 CSS 选择器是什么 a 那是 名字 document body innerHTML myString anchor HTML String 这段 JavaScript 创建了一个 a 带有名称的元素 H
  • 为什么 html 中的 AngularJS 错误没有显示在控制台中?

    Here s a fiddle http jsfiddle net 6y7odxmj 3 用于说明 当 ng click 指令 例如 调用未在控制器的 scope 或其父级 上定义的函数时 它会默默地失败 当我尝试调试网页时 这种行为令人抓
  • 如何使用Javascript获取ASP.NEt Web Forms标签的值?

    我有以下标签控件
  • Javascript 函数,我如何开始理解它们?

    我完全理解 为了学习 javascript 我需要知道函数是如何工作的 我了解传递参数的基础知识 然后使用值调用函数以将某些内容添加到一起 等等 我读过无数关于函数的文章 例如以及书籍等 但我只是不明白它们是如何使用的以及何时应该使用它们等
  • 类型错误:require.config 不是一个函数

    我正在使用 require js 作为早午餐项目的一部分 这段代码抛出错误 require config require config is not a function paths jquery lib jquery underscore
  • Meteor JS:存储特定模板实例状态的最佳方法是什么?

    我正在学习 Meteor JS 中的会话和反应式数据源 它们非常适合设置全局 UI 状态 但是 我不知道如何将它们的范围限制到模板的特定实例 这就是我想做的 我的页面上有多个可内容编辑的元素 每个下面都有一个 编辑 按钮 当用户单击 编辑
  • 云函数 onUpdate:无法读取未定义的属性“forEach”

    现在我正在尝试更新我的项目中的图片 我可以更新云火商店中的图片网址 但我也想使用 firebase 云功能从云存储中删除上一张图片 我想要实现的是 当我上传新图片时 从云存储中删除以前的图片 This is my data structur
  • 谷歌绘制具有相同比例的多个系列的图表

    我正在寻找一种在图形上显示多个系列的方法 这些系列具有相同的比例但仅显示一次 正如你在这里看到的 http jsfiddle net Youkoal d3xwnqdu http jsfiddle net Youkoal d3xwnqdu 我
  • 如何运行 Mike Bostock 的 D3 示例?

    我一直在尝试经营迈克博斯托克透视地球仪 http bl ocks org mbostock 6747043例如 但是如果您尝试在本地重现它 则对其 json 文件的引用是不正确的 问题来自于这行代码 d3 json mbostock raw
  • 通过均匀分布值来有效合并两个数组

    我见过许多问题 答案主题是通过交替值合并两个数组 他们是这样工作的 let array1 a b c d let array2 1 2 let outcome a 1 b 2 c d 但我希望输出更加高效 并且根据数组大小均匀分配值 exp
  • React 嵌入脚本标签不可样式化

    我打算将 SurveyMonkey 调查嵌入到我的网站中 用 React 制作 只是让它工作起来很麻烦 但最终这段代码工作了 let script let extractScript
  • 表单帖子上的 asp.net mvc 编码

    我在我的 asp net mvc 表单 带有文本区域的 nicedit 中使用富文本编辑器 当我在帖子上提交表单时 因为它不是 html 编码的 我收到以下消息 从客户端检测到潜在危险的 Request Form 值 如何对 post 上的

随机推荐

  • C语言深度剖析——bool类型,浮点数相等比较。

    目录 序言 一 bool类型 1 C语言中到底有没有bool类型 2 VS中的BOOL类型 二 浮点数与 0 比较 1 浮点数的精度缺失 2 浮点数判断相等解决方案 3 判断浮点数是否为 0 最后 序言 C语言中有很多类型 但是bool我们
  • 【AI人工智能】 最强大的语言模型镜像 使用起来真的太方便了! 真的要解放代码思维了吗?

    个人主页 极客小俊 作者简介 web开发者 设计师 技术分享博主 希望大家多多支持一下 我们一起进步 如果文章对你有帮助的话 欢迎评论 点赞 收藏 加关注 前言 AI 在某些基础应用领域可以帮助你减少很多工作量 很强大哦 嘿嘿 优点 这玩意
  • VS2017 libTorch cpu 环境搭建

    C libTorch cpu 环境搭建 一 下载libTorch 下载地址 Start Locally PyTorch 可以在图中选择下载cuda版本或cpu版本的 以CPU Release版本的libTorch为例 下载地址为 https
  • Druid连接池 一个设置 removeAbandonedTimeout

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Druid连接池 一个设置 removeAbandonedTimeout 博客分类 数据库
  • 软件开发外包:你有什么选择

    在2019年 软件开发外包提供了各种各样的选择 成千上万的公司在全球范围内提供软件开发外包服务 您将有很多选择 具体取决于许多标准 例如地理位置 时差 语言要求 甚至文化相似性 2019年的软件开发外包状况如何 在过去的10到15年中 发达
  • 自己封装 vue3+ts 组件库并且发布到 NPM

    自己封装 vue3 ts 组件库并且发布到 NPM 创建项目 pnpm create vite 配置 package json 按照提示创建好项目 然后再 package json 中进行如下配置 name tribiani vue too
  • zip解压

    1 使用apache的ant解压 org apache tools zip 2 引入pom
  • [C++](26)智能指针

    文章目录 引入 智能指针的原理 C 智能指针及其问题 auto ptr unique ptr shared ptr weak ptr 删除器 引入 首先看下面这个程序 int div int a b cin gt gt a gt gt b
  • 服务器安装系统绑定网卡,HPE ProLiant 系列服务器Microsoft Windows Server 2012系统下网卡绑定方法...

    微软NIC组合 也称为负载平衡 故障转移 LBFO 允许多个网络适配器组合成一个 这样做的目的可以带来带宽聚合 解决网络连接失败过程中的故障转移 它应用于Windows Server 2012的所有版本中 包括核心版和图形界面完全版 1 打
  • 2022年,普通人如何找到适合的副业?

    这几天高温天气不适合户外工作和活动 坐在家里一动不动都能出汗 温度直飙升到40度以上了 同时我国的其他地方也阴雨连绵甚至有洪灾的可能性 每年夏季到来都会面临高温 暴雨 洪水 泥石流的恶劣天气 大自然也有脾气 所以我们还是要善待大自然爱护环境
  • mysql 创建function

    mysql 的function和procedure 仅对5 0版本后的有效 包括show function status等命令是没用的 以创建function为例 存储过程和这个差不多 懒得打字了 首先先在mysql 下运行 set glo
  • 基于MATLAB实现CAD技术及其应用完整教程(附上完整源码+数据+使用说明)

    MATLAB是一种功能强大的计算机辅助设计 CAD 工具 它为工程师和设计师提供了一种高效 灵活的方式来创建 分析和优化各种设计 在本文中 我们将介绍MATLAB如何实现CAD技术 并探讨其在不同领域中的应用 文章目录 介绍 部分源码 完整
  • 深度学习实验(四)——卷积神经网络编程

    深度学习实验四 卷积神经网络编程 本次实验练习使用torch nn中的类设计一个卷积神经网络进行MNIST手写体数字图像分类 name x 填写你的姓名 sid B02014152 填写你的学号 print 姓名 s 学号 s name s
  • 将cmd中命令输出保存为LOG文本文件

    演示 将Ping命令的加长包输出到D盘的ping log文本文件 1 在C 目录下创建文本文件这步可ping log 可以省略 偶尔提示无法创建文件时需要 2 在提示符下输入 ping www baidu com t l 100 gt C
  • 游戏开发物理引擎PhysX研究系列:示例项目SampleCustomGravity解读

    一 介绍 该示例项目的主要目的是模拟一个角色在行星上面移动时的模拟 主要对象有 行星 定义了质心 角色 使用CapsuleController 角色行为有 跳跃 重力 二 实现思路 物体朝向 每帧计算当前物体的朝向 计算物体质心与行星质心两
  • 将一个十六进制字符串转换为十进制数值的问题

    在程序中 我们有时需要将一个十六进制字符串转换为十进制数字 比如 char ptr 0x11 int n 0 我们想让n等于0x11 即17 通常我们在C中 想将一个字符串转换为一整形数字 通常会使用下面的方法 char ptr 123 i
  • 如何发送一个验证码到邮箱

    有时候经常会有一个网站注册时会发送一个验证码 然后通过这个验证这个验证码来确定这个邮箱不是不你的 你可能会觉得发送一个验证码到邮箱很高大上 看完这篇文章你一定会决定这件事不过如此 要发送验证码 首先我们要创建一个生成验证码的类 随机生成验证
  • seata1.3.0 系列学习(一、seata1.3.0 安装)

    下载seata 此处选用目前最新版本1 3 0 解压完成后 注 seata官方从1 0版本后不再提供sql脚本 以及nacos推送配置脚本 需要从0 9 0的版本复制 将红色框框的四个文件复制到1 3 0 conf目录下 执行db stor
  • Linux共享服务samba设置

    文章目录 一 Samba服务器介绍 1 samba是什么 2 Samba的应用环境 3 Samba的工作原理 二 Samba服务基础 三 Centos7 samba共享服务实验 1 安装共享服务 2 修改smb conf配置文件 设置共享
  • 基于jquery的自定义显示消息数量

    根据需求简单的实现一个小功能控件 暂时不支持扩展 xxxxxxx iconCountPlugin options start isOffset 三个参数 自定义样式 是否禁止图标位置随浏览器窗口变化而变化 是否禁用偏移量这个是调用 后面俩参