自己动手制作jquery插件之自动添加删除行功能介绍


Posted in Javascript onOctober 14, 2011

这是一个我认为功能基本完善的插件,它包括添加、删除、插入、上下移动、索引标识、 数量控制等功能,基本上能满足大部分多行添加的需求,当然,在完成这些功能的前提下,我也尽量保持较少的代码量和易理解的逻辑性。

     这个插件的演示页面是http://www.lovewebgames.com/demo/autoAdd/autoAdd.html ,引用自己动手制作jquery插件之自动添加删除行(上)里的介绍,这是一个简单的插件,它的作用是:一个系统中有大量的需要对一个行进行复制添加,希望能够进行批量的操作时,就可以用这个插件了。

     插件效果图如下:

 

自己动手制作jquery插件之自动添加删除行功能介绍

      在上篇里已经提到了一些制作jquery插件的基础知识,接下来就是完成这此功能了,我尽量写得吸引人眼球一点,首先,我们要完成最基础的复制行功能,很多人,都偏爱于去拼接html代码,他们觉得这个插件的入口应该是传入一段HTML代码后,你再对这个HTML进行模版复制,我不能说这种做法是错误的,因为它也确实能够完成这项工作,但是如果你要复制的行的代码比较多,又有复杂一点的控件,如存在日历或城市三级菜单等,这样你就很不易维护了,我们做前端的,就是为了让做程序的做更少的事,让用户更快捷方便的体验。所以我尽量不让程序去进行转义拼接代码,把这些工作留给JS,jquery中有个clone(bool)的方法很好用,它有一个

Boolean类型的参数,如果你要完全的复制某个dom对象,包括它上面的事件的话,就可以用clone(true)了,这样也少了再次绑定事件的困绕,所以这个插件的回调方法,其实很难用到。添加行的代码如下:
function addRow(num, isInsert, target) { 
for (var i = 0; i < num - count; i++) { 
var temp = content.find("." + settings.tempRowClass).first().clone(true); 
temp.find("input").val(""); 
temp.find("select").val("-1"); 
temp.find("textarea").val(""); 
temp.find(":checkbox").attr("checked", false); 
temp.attr("id", ""); 
temp.find("input,tr,textarea,select,:checkbox,tbody").attr("id", ""); 
if (temp.find(".richText").length > 0) { 
temp.find(".ke-container").remove(); 
} 
temp.find(".richText,input").each(function() { 
$(this).attr("id", "txt_" + Math.round(Math.random() * new Date().getTime())) 
$(this).show(); 
}); 
if (isInsert) { 
temp.insertBefore(target.closest("." + settings.tempRowClass)); 
} else { 
content.append(temp); 
} 
} 
if (num < count) { 
for (var j = count - 1; j >= num; j--) { 
delRow(content.find("."+settings.tempRowClass).eq(j)); 
} 
} else { 
if (settings.addCallBack) 
settings.addCallBack($(temp)); 
} 
count = content.find("." + settings.tempRowClass).length; 
settings.changeInput.val(count); 
sumIndex(); 
showhideBtn(); 
};

大家可能注意到,我在写这些方法的时候,都有在前面调用content然后再查找子集,这个是为了一个页面同时出现多次调用时,出现冲突的办法。

这个插件写到这就基本上算是完成了, 区区百来行代码,就完成了一个我认为不错且实用的小工具,以后调用,就只需要在html里设置相对应的class就行了,多么easy,是否也happy呢?那就不得而知,代码比较粗糙,如有高手,可以帮我改进下,欢迎大家一起探讨,自所谓送人菊花,留有余香,大家加我Q群一起学习进步吧!70210212或77813547.

Javascript 相关文章推荐
javascript数字时钟示例分享
Apr 23 Javascript
使用impress.js制作幻灯片
Sep 09 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
Nov 05 Javascript
动态创建按钮的JavaScript代码
Jan 29 Javascript
JS控制文本域只读或可写属性的方法
Jun 24 Javascript
微信小程序 location API接口详解及实例代码
Oct 12 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
Dec 14 Javascript
浅谈node中的exports与module.exports的关系
Aug 01 Javascript
vue中axios的封装问题(简易版拦截,get,post)
Jun 15 Javascript
浅析Vue 中的 render 函数
Feb 28 Javascript
Javascript模块化机制实现原理详解
Apr 02 Javascript
JS前端宏任务微任务及Event Loop使用详解
Jul 23 Javascript
javascript nextSibling 与 getNextElement(node) 使用介绍
Oct 13 #Javascript
获取body标签的两种方法
Oct 13 #Javascript
自己动手制作jquery插件之自动添加删除行的实现
Oct 13 #Javascript
jQuery EasyUI API 中文文档 - NumberBox数字框
Oct 13 #Javascript
最短的javascript:地址栏载入脚本代码
Oct 13 #Javascript
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
Oct 13 #Javascript
Javascript insertAfter() 实现函数代码
Oct 12 #Javascript
You might like
一个查看session内容的函数
2006/10/09 PHP
php学习之数据类型之间的转换代码
2011/05/29 PHP
基于php-fpm的配置详解
2013/06/03 PHP
5种PHP创建数组的实例代码分享
2014/01/17 PHP
ThinkPHP多表联合查询的常用方法
2020/03/24 PHP
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
2015/03/03 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
2017/03/05 PHP
jQuery中判断一个元素是否为另一个元素的子元素(或者其本身)
2012/03/21 Javascript
jquery设置元素的readonly和disabled的写法
2013/09/22 Javascript
JS实现可缩放、拖动、关闭和最小化的浮动窗口完整实例
2015/03/04 Javascript
跟我学习javascript的prototype使用注意事项
2015/11/17 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
2016/10/10 Javascript
快速掌握jquery分页插件jqPaginator的使用方法
2017/08/09 jQuery
利用纯JS实现像素逐渐显示的方法示例
2017/08/14 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
2017/11/08 jQuery
基于JavaScript实现五子棋游戏
2020/08/26 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
2018/01/12 Javascript
微信小程序实现YDUI的ScrollNav组件
2018/02/02 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
2019/03/06 Javascript
pandas把dataframe转成Series,改变列中值的类型方法
2018/04/10 Python
详解python中的hashlib模块的使用
2019/04/22 Python
python retrying模块的使用方法详解
2019/09/25 Python
tensorflow之读取jpg图像长和宽实例
2020/06/18 Python
Python filter过滤器原理及实例应用
2020/08/18 Python
html5 乒乓球(碰撞检测)实例二
2013/07/25 HTML / CSS
群胜软件Java笔试题
2012/09/29 面试题
恐龙的灭绝教学反思
2014/02/12 职场文书
教师考核材料
2014/05/21 职场文书
2014年度个人工作总结
2014/11/07 职场文书
先进党支部事迹材料
2014/12/24 职场文书
银行保安拾金不昧表扬稿
2015/05/05 职场文书