自己动手制作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 相关文章推荐
简单三步,搞掂内存泄漏
Mar 10 Javascript
asp 的 分词实现代码
May 24 Javascript
突发奇想的一个jquery插件
Nov 19 Javascript
js展开闭合效果演示代码
Jul 24 Javascript
JavaScript中Cookie操作实例
Jan 09 Javascript
javascript实现带节日和农历的日历特效
Feb 01 Javascript
vue router使用query和params传参的使用和区别
Nov 13 Javascript
Angular PWA使用的Demo示例
Jan 31 Javascript
使用react context 实现vue插槽slot功能
Jul 18 Javascript
解决layui下拉框监听问题(监听不到值的变化)
Sep 28 Javascript
小程序实现横向滑动日历效果
Oct 21 Javascript
谈谈node.js中的模块系统
Sep 01 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 session常见问题集锦及解决办法总结
2007/03/18 PHP
dedecms中显示数字验证码的修改方法
2007/03/21 PHP
php发送post请求的三种方法
2014/02/11 PHP
PHP实现自动对图片进行滚动显示的方法
2015/03/12 PHP
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
PHP微信开发用Cache 解决数据缓存
2016/07/11 PHP
在laravel中实现ORM模型使用第二个数据库设置
2019/10/24 PHP
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
16个最流行的JavaScript框架[推荐]
2011/05/29 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
2013/05/03 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
JavaScript中使用concat()方法拼接字符串的教程
2015/06/06 Javascript
js中利用tagname和id获取元素的方法
2016/01/03 Javascript
jQuery实现简单隔行变色的方法
2016/02/20 Javascript
css和js实现弹出登录居中界面完整代码
2017/11/26 Javascript
微信小程序实现简单input正则表达式验证功能示例
2017/11/30 Javascript
使用vue制作探探滑动堆叠组件的实例代码
2018/03/07 Javascript
vue-cli项目中使用Mockjs详解
2018/05/14 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
2018/08/31 Javascript
vue-router实现嵌套路由的讲解
2019/01/19 Javascript
[56:29]Secret vs Optic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[43:57]Liquid vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Fiddler如何抓取手机APP数据包
2016/01/22 Python
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
2018/03/19 Python
python实现发送form-data数据的方法详解
2019/09/27 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
Django Form常用功能及代码示例
2020/10/13 Python
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
2015/03/27 HTML / CSS
英国顶级珠宝品牌之家:John Greed
2018/06/09 全球购物
美国礼品卡交易网站:Cardpool
2018/08/27 全球购物
费用会计岗位职责
2014/01/01 职场文书
大学四年个人的自我评价
2014/02/26 职场文书
爱牙日活动总结
2014/08/29 职场文书
暑期社会实践心得体会
2014/09/02 职场文书
Python基础之元编程知识总结
2021/05/23 Python