自己动手制作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 组件之旅(三):用 Ant 构建组件
Oct 28 Javascript
解析javascript 浏览器关闭事件
Jul 08 Javascript
当鼠标移动时出现特效的JQuery代码
Nov 08 Javascript
javascript验证身份证完全方法具体实现
Nov 18 Javascript
jQuery中ajax的post()方法用法实例
Dec 26 Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
Mar 26 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
Dec 30 Javascript
Angularjs中使用指令绑定点击事件的方法
Mar 30 Javascript
vscode下vue项目中eslint的使用方法
Jan 13 Javascript
关于AOP在JS中的实现与应用详解
May 06 Javascript
javascript function(函数类型)使用与注意事项小结
Jun 10 Javascript
Vue组件间通信 Vuex的用法解析
Aug 05 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
PHP 和 MySQL 开发的 8 个技巧
2006/10/09 PHP
PHP 截取字符串 分别适合GB2312和UTF8编码情况
2009/02/12 PHP
PHP 源代码压缩小工具
2009/12/22 PHP
Yii中的relations数据关联查询及统计功能用法详解
2016/07/14 PHP
PHP 常用时间函数资料整理
2016/10/22 PHP
php实现微信原生支付(扫码支付)功能
2018/05/30 PHP
Javascript技术技巧大全(五)
2007/01/22 Javascript
js实现页面转发功能示例代码
2013/08/05 Javascript
Javascript中的String对象详谈
2014/03/03 Javascript
jQuery源码解读之removeClass()方法分析
2015/02/20 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
微信小程序视图容器(swiper)组件创建轮播图
2020/06/19 Javascript
JS使用Prim算法和Kruskal算法实现最小生成树
2019/01/17 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
layui table 多行删除(id获取)的方法
2019/09/12 Javascript
NProgress显示顶部进度条效果及使用详解
2019/09/21 Javascript
vue开发移动端底部导航条功能
2020/04/08 Javascript
11个并不被常用但对开发非常有帮助的Python库
2015/03/31 Python
Python常用的文件及文件路径、目录操作方法汇总介绍
2015/05/21 Python
Python3 加密(hashlib和hmac)模块的实现
2017/11/23 Python
Python3中的bytes和str类型详解
2019/05/02 Python
Django实现任意文件上传(最简单的方法)
2020/06/03 Python
scrapy头部修改的方法详解
2020/12/06 Python
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
PHP如何与mysql建立链接
2013/05/05 面试题
50岁生日感言
2014/01/23 职场文书
美术指导求职信
2014/03/17 职场文书
大学新闻系求职信
2014/06/03 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
党的群众路线教育实践活动总结大会主持词
2014/10/30 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
老人与海读书笔记
2015/06/26 职场文书
五一放假通知怎么写
2015/08/18 职场文书
导游词之云南省玉龙雪山
2019/12/19 职场文书