自己动手制作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 相关文章推荐
node.js中的fs.appendFileSync方法使用说明
Dec 17 Javascript
JQuery自动触发事件的方法
Jun 13 Javascript
跟我学习javascript的闭包
Nov 16 Javascript
javascript实现网页端解压并查看zip文件
Dec 15 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
Apr 12 Javascript
JavaScript仿网易选项卡制作代码
Oct 06 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
Nov 03 Javascript
概述如何实现一个简单的浏览器端js模块加载器
Dec 07 Javascript
利用Vue v-model实现一个自定义的表单组件
Apr 27 Javascript
webpack2.0配置postcss-loader的方法
Aug 17 Javascript
代码详解Vuejs响应式原理
Dec 20 Javascript
详解element-ui中form验证杂记
Mar 04 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强制运行广告的方法
2014/12/01 PHP
php字符串过滤与替换小结
2015/01/26 PHP
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
2010/01/05 Javascript
script标签的 charset 属性使用说明
2010/12/04 Javascript
CodeMirror2 IE7/IE8 下面未知运行时错误的解决方法
2012/03/29 Javascript
计算新浪Weibo消息长度(还可以输入119字)
2013/07/02 Javascript
完美解决AJAX跨域问题
2013/11/01 Javascript
浅析IE10兼容性问题(frameset的cols属性)
2014/01/03 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
js使用循环清空某个div中的input标签值
2014/09/29 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
JS实现仿QQ效果的三级竖向菜单
2015/09/25 Javascript
Angularjs 实现移动端在线测评效果(推荐)
2017/04/05 Javascript
JavaScript禁止微信浏览器下拉回弹效果
2017/05/16 Javascript
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
5 种JavaScript编码规范
2018/01/30 Javascript
详解vuex的简单使用
2018/03/12 Javascript
vue中watch和computed的区别与使用方法
2020/08/23 Javascript
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
跟老齐学Python之总结参数的传递
2014/10/10 Python
python在linux系统下获取系统内存使用情况的方法
2015/05/11 Python
Python实现针对含中文字符串的截取功能示例
2017/09/22 Python
python3.4控制用户输入与输出的方法
2018/10/17 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
通过python爬虫赚钱的方法
2019/01/29 Python
OpenCV搞定腾讯滑块验证码的实现代码
2019/05/18 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
Pytorch中膨胀卷积的用法详解
2020/01/07 Python
2014向国旗敬礼网上签名活动总结
2014/09/27 职场文书
2014财产信托协议书范本
2014/11/18 职场文书
岗位聘任协议书
2015/09/21 职场文书
Python基础之数据类型知识汇总
2021/05/18 Python
pytorch训练神经网络爆内存的解决方案
2021/05/22 Python