<form action="batch.do" method="post">
<!-- 前台动态渲染 -->
<!-- 隐藏表单域保存条目的数量 -->
<input type="hidden" name="hidden" value="" class="hidden"/>
<table border="1" id="table1">
<tr id="l_title">
<td>昵称</td>
<td>密码</td>
<td>操作</td>
</tr>
<tr class="datalist">
<td><input type="text" name="name" /></td>
<td><input type="text" name="passwd" /></td>
<td><a href="#" class="add">添加</a>
<a href="#" class="del">移除</a></td>
</tr>
</table>
<br/>
<center><input type="submit" value="提交" /></center>
</form>
var i = 1;
$(document).ready(function() {
//这种写法可以删除任意行,并可以为新增行自动绑定事件
$("table").delegate(".deleleNode", "click", function() {
$(this).parent().parent().remove();
i--;
$(".hidden").val(i);
});
$(".add").click(function(){
var node = $("<tr class='datalist'>" + "<td>"
+ "<input type='text' name='name'/>" + "</td>" + "<td>"
+ "<input type='text' name='passwd'/>" + "</td>" + "<td>"
+ "<a href='#' class='add'>添加</a>"
+ "<a href='#' class='deleleNode'>移除</a>" + "</td>" + "</tr>");
$("table").append(node);
i++;
$(".hidden").val(i);
});
});
节点增加逻辑
将单元通过append添加到table内部,同时将一个全局的计数器增1写入隐藏表单域的value属性
节点删除逻辑
将单元从父节点中删除,由于live在jquery高版本失效,此处使用delegate进行操作; 删除节点之后将计数器减一并写回隐藏表单域的value中
delegate用法
语法
$(selector).delegate(childSelector,event,data,function)
返回值: jQuery delegate(selector,[type],[data],fn)
概述
指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。
参数
selector,[type],fnString,String,Function V1.4.2
selector:选择器字符串,用于过滤器触发事件的元素。
type:附加到元素的一个或多个事件。由空格分隔多个事件值。必须是有效的事件。
fn:当事件发生时运行的函数
selector,[type],[data],fnString,String,Object,Function V1.4.2
selector:选择器字符串,用于过滤器触发事件的元素。
type:附加到元素的一个或多个事件。由空格分隔多个事件值。必须是有效的事件。
data:传递到函数的额外数据
fn:当事件发生时运行的函数
selector,eventsString,String V1.4.3
selector:选择器字符串,用于过滤器触发事件的元素。
events:一个或多个事件类型的字符串和函数的数据映射来执行他们。