自己动手制作jquery插件之自动添加删除行功能介绍 - Web前端
作者:98wpeu发布时间:2026-07-22分类:网页前端技术浏览:11
导读:这是一个我认为功能基本完善的插件,它包括添加、删除、插入、上下移动、索引标识、数量控制等功能,基本上能满足大部分多行添加的需求,当然,在完成这些功能的前提下,我也尽量保持较少的代...
这是一个我认为功能基本完善的插件,它包括添加、删除、插入、上下移动、索引标识、 数量控制等功能,基本上能满足大部分多行添加的需求,当然,在完成这些功能的前提下,我也尽量保持较少的代码量和易理解的逻辑性。

复制代码 代码如下:
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.
这个插件的演示页面是http://www.lovewebgames.com/demo/autoAdd/autoAdd.html ,引用自己动手制作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.
相关推荐
- jQuery 联动日历实现代码 - Web前端
- 30个让人兴奋的视差滚动(Parallax Scrolling)效果网站 - Web前端
- ASP.NET jQuery 实例10 动态修改hyperlink的URL值 - Web前端
- ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能 - Web前端
- JQuery 改变页面字体大小的实现代码(实时改变网页字体大小) - Web前端
- jquery事件机制扩展插件 jquery鼠标右键事件 - Web前端
- Jquery阻止事件冒泡 event.stopPropagation - Web前端
- JQuery通过Ajax提交表单并返回结果 - Web前端
- ASP.NET jQuery 实例2 (表单中使用回车在TextBox之间向下移动) - Web前端
- 来自国外的30个基于jquery的Web下拉菜单 - Web前端
- 网页前端技术排行
-
- 1[Web前端]用javascript实现默认图片替代未显示的图片 - Web前端
- 2分析Iconfont-阿里巴巴矢量常用图标库 - Web前端
- 3基于jquery的滚动条滚动固定div(附演示下载) - Web前端
- 4【第六章】Foundation之按钮和下拉功能 - Web前端
- 5jQuery实例教程:制作网页中可折叠的面板 - Web前端
- 6jQuery编写widget的一些技巧分享 - Web前端
- 7jQuery实现鼠标移到元素上动态提示消息框效果 - Web前端
- 8在Mac/PC上远程调试iPhone/iPad上的网页 - Web前端
- 9分享精心挑选的12款优秀jQuery Ajax分页插件和教程 - Web前端
- 最近发表
-
- WordPress随机显示特色图片插件:Random Post Thumbnails
- KeePass实现Chrome浏览器自动填充密码方法一
- LNMP一键包nginx 301强制跳转到https教程
- KeePass实现Chrome浏览器自动填充密码方法二
- #建站# 免费的VPS管理软件Xshell8/Xftp8中文版下载
- 使用Xshell 8连接VPS教程_电脑登录vps的方法
- WordPress评论界面添加烟花????效果
- 不同浏览器书签同步方案:坚果云+Floccus_详细使用教程
- iOS端KeePassXC客户端APP:Strongbox Password Safe
- 给WordPress评论中的Gravatar头像图片添加ALT属性


