jquery插件小试牛刀:文本框为空时默认文字显示,获得焦点后默认文字消失
最近粗略学习了一下jQuery插件制作的基本原理和方法,再次感受到jQuery的方便和强大之处。本着“现学现用”的精神,马上动手做了个非常简单的文本框插件,就当练手了。目标效果很简单:一个文本框,当没有内容且失去焦点时显示默认文字(可以加点样式以突出显示跟正常输入文字的区别),获得焦点时去掉默认文字。相信大家经常看到这种效果,尤其在搜索框中比较常用。废话不多讲,直接贴代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | ( function ($) { $.fn.smartFocus = function (options) { var defaults = { defaultText: '请输入文字' }; var opt = $.extend(defaults, options); return this .each( function () { $( this ).focus( function () { var text = $( this ).val(); if (text == opt.defaultText) { $( this ).val( '' ); } }).blur( function () { var text = $( this ).val(); if (text == '' ) { $( this ).val(opt.defaultText).css( "font-style" , "italic" ); } else { $( this ).css( "font-style" , "normal" ); } }); if ($( this ).val() == '' ) { $( this ).val(opt.defaultText).css( "font-style" , "italic" ); ; } else { $( this ).css( "font-style" , "normal" ); } }); }; })(jQuery); |
稍微解释下代码。代码最外层是写jQuery插件的惯用伎俩:匿名函数。
(function($){ })(jQuery)
定义好后立即传入jQuery对象调用它。写插件的基本原理是扩展jQuery对象。$.fn.extendName=function(args){...},extendName即为插件的名字。另外值得一提的是$.extend函数,它有多个重载版本,这里用的就是将第一个参数之后的对象合并到第一个参数并返回合并后的值。为什么要合并呢?这样方便使用时传入自定义参数,没有参数时使用默认的。return this.each(function(){...})最为关键了,它返回jQuery选择器选中的对象,里面的函数就是对选中的对象进行各种操作。以上就是对jQuery插件的基本写法的介绍。至于插件本身,就很简单了。就是文本框的focus和blur事件处理,具体看看代码就清楚了。
调用方法:$("#txtName").smartFocus({ defaultText: '请输入姓名' });
效果如下图所示:
初次写jQuery插件,只是实现了最基本的功能。就当写个备忘录,也希望对初学者有点帮助。
我的网站www.zoneky.com/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?