自己动手制作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 相关文章推荐
Js sort排序使用方法
Oct 17 Javascript
JQUERY1.6 使用方法四 检测浏览器
Nov 23 Javascript
JavaScript使用slice函数获取数组部分元素的方法
Apr 06 Javascript
Bootstrap3制作图片轮播效果
May 12 Javascript
AngularJS基础 ng-if 指令用法
Aug 01 Javascript
AngularJS入门教程之更多模板详解
Aug 19 Javascript
jQuery无缝轮播图代码
Dec 22 Javascript
vue.js 左侧二级菜单显示与隐藏切换的实例代码
May 23 Javascript
js 实现复选框只能选择一项的示例代码
Jan 23 Javascript
vue实现底部菜单功能
Jul 24 Javascript
layui点击弹框页面 表单请求的方法
Sep 21 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
Aug 17 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的安全策略
2006/10/09 PHP
phpmyadmin的#1251问题
2006/11/25 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
2016/11/03 PHP
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
javascript getElementsByTagName
2011/01/31 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
Jquery树插件zTree用法入门教程
2015/02/17 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
jquery中validate与form插件提交的方式小结
2016/03/26 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果
2017/07/20 jQuery
js数字滑动时钟的简单实现(示例讲解)
2017/08/14 Javascript
简单谈谈JS中的正则表达式
2017/09/11 Javascript
在vue中给列表中的奇数行添加class的实现方法
2018/09/05 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
微信小程序实现多选功能
2018/11/04 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
详解如何更好的使用module vuex
2019/03/27 Javascript
vue自定义指令之面板拖拽的实现
2019/04/14 Javascript
JS中async/await实现异步调用的方法
2019/08/28 Javascript
webpack 动态批量加载文件的实现方法
2020/03/19 Javascript
Vue实现可移动水平时间轴
2020/06/29 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
2020/07/20 Javascript
Python遍历pandas数据方法总结
2018/02/09 Python
详解有关PyCharm安装库失败的问题的解决方法
2020/02/02 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
2020/07/30 Python
Python中的面向接口编程示例详解
2021/01/17 Python
html5调用app分享功能示例(WebViewJavascriptBridge)
2018/03/21 HTML / CSS
戴森西班牙官网:Dyson西班牙
2020/02/04 全球购物
《池塘边的叫声》教学反思
2014/04/12 职场文书
李敖北大演讲稿
2014/05/24 职场文书
村主任群众路线个人对照检查材料
2014/09/26 职场文书
2015年学校政教工作总结
2015/07/20 职场文书
结婚典礼致辞
2015/07/28 职场文书
少先大队干部竞选稿
2015/11/20 职场文书
导游词之山东八仙过海景区
2019/11/11 职场文书