jquery动态增加或删除tr和td【实际项目】
难点:
(1)动态增加、删除tr和td
(2)每天tr和td都有下标,且下标要动态变化,
(3)tr和td为什么下标不能随便写,原因是此处需要把所有tr中的数据以list的形式发送到后台对象中,所有每天tr中的tr中name=‘对象[index].属性’,必须有下标且下标要从0开始且要连续不能跳跃
(4)增加tr和td需要学习细节有:
创建td var $tdName = $("<td class='in-ctt'></td>");
td添加内容 $tdName.html("<input name=\'teams["+tempRow+"].uname\' value=\'\'/>");
tr增加td $tr.append($tdName);
表格最后一行增加tr tb1.append($tr);
(5)删除tr和td的学习细节有:
把要删除的tr下标传回 delRows(sub)
如何删除tr $("#_tr_"+sub).remove();
循环后面的tr如何获取每个td 每天td的对应name属性角标要全部修改
$("input[name='teams["+i+"].uname']").attr("name","teams["+(i-1)+"].uname");
(6)本内容关键是熟悉Jquery的选取器 方法等知识点
而且要细心,自己在做的时候下标总是调不对(原因是name赋值时误加了'和]符号)

//新增团队信息的
function insertRows(){
//获取表格对象
var tb1 = $("#viewTabs"); // 找table的ID
var rowNum= $("#viewTabs tr").size(); //获取表格的行数
//var liNum=$("tr[id^='_tr_']").size(); //获取以_tr_开头测tr个数
var tempRow=rowNum-1;; //用于新增tr、td、属性下标
var $tdName = $("<td class='in-ctt'></td>"); //创建第一个td
$tdName.html("<input name=\'teams["+tempRow+"].uname\' value=\'\'/>"); //html把序号放到了第一个td里面 var $tdDept = $("<td class='in-ctt'></td>"); //第二个td
$tdDept.html("<input name=\'teams["+tempRow+"].deptname\' value=\'\' />");//放文本框 var $tdPoints = $("<td class='in-ctt'></td>"); //第三个td
$tdPoints.html("<input style=\'width:420px;\' name=\'teams["+tempRow+"].points\' value=\'\'/>");//放文本框 var $tdLeader = $("<td class='in-ctt'></td>"); //第四个td
$tdLeader.html("<input type=\'radio\' name=\'teams["+tempRow+"].leader\' value=\'1\' />是 "
+"<input type=\'radio\' name=\'teams["+tempRow+"].leader\' value=\'2\' checked=\'checked\' />否");//放文本框
var $tdDel = $("<td class='in-ctt'></td>"); //第五个td
$tdDel.html("<input hidden=\'hidden\' name=\'teams["+tempRow+"].busid\' value=\'${bean.id}\' />"
+"<input type=\'button\' value=\'删除\' name=\'del["+tempRow+"]\' onclick=\'delRows("+tempRow+")\'>"); //里面添加了一个超链接 超链接里面有个删除的方法 var $tr = $("<tr id=\'_tr_"+tempRow+"\' class=\'in-opt\'></tr>");// 创建tr,将3个td放置到tr中
$tr.append($tdName);
$tr.append($tdDept);
$tr.append($tdPoints);
$tr.append($tdLeader);
$tr.append($tdDel);
//在表格的最后追加新增的tr
tb1.append($tr);
}
//删除tr和td并且移动后面的tr和td且下标要一致
function delRows(sub){
//var temp=[]; 本来用于保存上移动tr中的td属性值 后来发现会自动匹配数据 所以隐藏了
var rowNum=sub+1; //此处的规律是:行号为下标+1
var tb1 = $("#viewTabs"); //找table的ID
var tempRow = $("#viewTabs tr").size();//获取表格的行数
if (tempRow >rowNum){
$("#_tr_"+sub).remove(); //删除tr
for (i=(parseInt(sub)+1);i<tempRow-1;i++){
//temp[0]=$("input[name=teams["+i+"].uname]").val();
//temp[1]=$("input[name=teams["+i+"].deptname]").val();
//temp[2]=$("input[name=teams["+i+"].points]").val();
//temp[3]=$("input[name=teams["+i+"].leader]").val();
//temp[4]=$("input[name=teams["+i+"].busid]").val();
$("#_tr_"+i).attr("id","_tr_"+(i-1)+"");
$("input[name='del["+i+"]']").attr("onclick","delRows("+(i-1)+")");
$("input[name='del["+i+"]']").attr("name","del["+(i-1)+"]");
$("input[name='teams["+i+"].uname']").attr("name","teams["+(i-1)+"].uname");
$("input[name='teams["+i+"].deptname']").attr("name","teams["+(i-1)+"].deptname");
$("input[name='teams["+i+"].points']").attr("name","teams["+(i-1)+"].points");
$("input[name='teams["+i+"].leader']").attr("name","teams["+(i-1)+"].leader");
$("input[name='teams["+i+"].busid']").attr("name","teams["+(i-1)+"].busid"); }
} }
html
<!-- 团队信息 -->
<div class="pane">
<div class="in-btn">
<input type="text" style="display: none;" />
</div>
<div style="clear: both;"></div>
<div style="float: right; padding: 0 20px 5px 0;"><input type="button" value="新增" onclick="insertRows()"/></div> <table border="0" cellpadding="0" cellspacing="0"
class="in-tb margin-top5" id="viewTabs">
<tr class="in-opt">
<th class="in-ctt" style="background-color: #f7f7f7;"
width="15%">姓名</th>
<th class="in-ctt" style="background-color: #f7f7f7;"
width="15%">单位</th>
<th class="in-ctt" style="background-color: #f7f7f7;"
width="40%">履历亮点</th>
<th class="in-ctt" style="background-color: #f7f7f7;"
width="15%">是否是导师</th>
<th class="in-ctt" style="background-color: #f7f7f7;"
width="15%">操作</th>
</tr>
<c:forEach items="${bean.teams}" var="team" varStatus="i">
<tr id="_tr_${i.index}" class="in-opt">
<td class="in-ctt">
<input name="teams[${i.index}].uname" value="${team.uname}" /></td>
<td class="in-ctt">
<input name="teams[${i.index}].deptname" value="${team.deptname}" /></td>
<td class="in-ctt">
<input name="teams[${i.index}].points" value="${team.points}" style="width:420px;"/></td>
<td class="in-ctt">
<c:if test="${team.leader==1}">
<input type="radio" name="teams[${i.index}].leader" value="1" checked="checked" />是
<input type="radio" name="teams[${i.index}].leader" value="2" />否
</c:if>
<c:if test="${team.leader==2}">
<input type="radio" name="teams[${i.index}].leader" value="1" />是
<input type="radio" name="teams[${i.index}].leader" value="2" checked="checked" />否
</c:if></td>
<td class="in-ctt">
<input type="hidden" name="teams[${i.index}].busid" value="${bean.id}" />
<input type="button" value="删除" name="del[${i.index}]" onclick="delRows(${i.index})"></input></td>
</tr>
</c:forEach>
</table>
</div>
jquery动态增加或删除tr和td【实际项目】的更多相关文章
- jQuery实现表格行的动态增加与删除(改进版)
之前写过一个简单的利用jQuery实现表格行的动态增加与删除的例子,有些人评论说"如果表格中是input元素,那么删除后的东西都将自动替换,这样应该是有问题的,建议楼主改进!",故 ...
- jquery 动态添加和删除 ul li列表
今天需要实现一个jquery动态添加和删除 ul li列表中的li行,自己简单的实现乐一个,分享一下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...
- jQuery实现表格行的动态增加与删除 序号 从 1开始排列
<table id="tab" border="1" width="60%" align="center" sty ...
- jquery实现表格行的动态增加和删除
$("#Addmaterial").click(function () {//Addmaterial是增加按钮的ID $("#tab tr").attr(&qu ...
- jQuery实现表格行的动态增加与删除
删除之前删除2行后: 1<script> 8 $(document).ready(function(){ 9 //<tr/>居中 10 $("#tab tr" ...
- jquery 动态增加删除行
最近写程序,碰巧有动态增加删除行,下面就记录一下 html就不写了,也没有什么,直接上核心了 新增行 function addRow(obj){ //获得table一共有多少行,方便追加的时候给序号赋 ...
- jQuery动态添加和删除表格行
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- hdfs以及hbase动态增加和删除节点
一个知乎上的问题:Hbase的Region server和hadoop的datanode是否可以部署在一台服务器上?如果是的话,二者是否是一对一的关系?部署在同一台服务器上,可以减少数据跨网络传输的流 ...
- jquery 动态增加的html元素,初始化设置在id或class上的事件无效
一般情况,我们会在页面初始化完成后对class定义一些全局事件,举个栗子: $(document).ready(function(){ $(".class").on("m ...
随机推荐
- Ubuntu+apache安装redmin
公司要迁移redmin,本来以为是一个很简单的项目,想不到整整搞了一天加一个晚上. 首先是对ruby的安装不熟悉,现在明白了ruby的安装顺序是先安装rvm版本管理,然后用rvm安装ruby,安装好后 ...
- VS2012 QT5.2.0 无法解析的外部符号
背景:在新建QT工程时,可能没有选择一些库,虽然在头文件中引用了,但是程序依然无法识别 现象:一般出现"LNK2019"错误. 解决:以网络为例,在VS2012中加入网络库,分为两 ...
- Android-----代码实现打开手机第三方应用APP
最近做一个项目,有一个需要启动第三方应用,和微信的地图查看差不多,需要启动高德,百度或腾讯地图来查看:特来分享,希望有所帮助. 案例效果如图: 要想启动第三方:首先要知道他的包名 一:高德 高德:co ...
- HDU - 5988The 2016 ACM-ICPC Asia Qingdao Regional ContestG - Coding Contest 最小费用流
很巧妙的建边方式 题意:有n个区域,每个区域有一些人数si和食物bi,区域之间有m条定向路径,每条路径有人数通过上限ci.路径之间铺了电线,每当有人通过路径时有pi的概率会触碰到电线,但是第一个通过的 ...
- Java编码方式再学
一直以来对编码方式对了解不是很深入.建议读下这几篇博文 学点编码知识又不会死:Unicode的流言终结者和编码大揭秘 编码研究笔记 这几篇博文上回答了内心存在的一些问题,这些问题可能也是大家经常遇到的 ...
- python 从url中提取域名和path
使用Python 内置的模块 urlparse from urlparse import * url = 'https://docs.google.com/spreadsheet/ccc?key=bl ...
- C#中Abstract和Virtua笔记,知识
在C#的学习中,容易混淆virtual方法和abstract方法的使用,现在来讨论一下二者的区别.二者都牵涉到在派生类中与override的配合使用. 一.Virtual方法(虚方法) virtual ...
- Personal Introduction
专业:计算机科学与技术 我是博客园的新人,虽然接触编程世界只有一年,基础知识比较差,编程能力差,但对于这个专业,我还是充满兴趣,希望有一天能独当一面,从今天起,我将分享一些在学习web前端和其他方面的 ...
- hdu 6058 Kanade's sum(模拟链表)
Kanade's sum Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- 通过ping 主机名,或者主机名对应的IP地址
通过ping 主机名,或者主机名对应的IP地址: 如下图: 懵了吧? 但是你用 ping 主机名 -4