大家有没有遇到过JQUERY增一行,删一行不灵的问题??????
要求是一个TABLE列表10行,为了保持行数不变,并且是无刷新更新列表行。
在FORM中新增一条记录的同时删除最后一行的记录,保持和数不变,我用的方法:
JScript code
$("#tableId tr:first").before("<tr><td>asdf</td></tr>");
$("#tableId tr:last").remove();
这是在第一行新增一条,然后删除最的一行。
但这么用不行!原因是对于原来刷出来的列表10条记录是可以的,但如果你新增了10条以上,
就是把原来刷出来的10条都换成你新增的这10条的话,你再新增,每新增两次,他才删一条,
所以造成多于10条记录,并不断的增加现像,不知道是怎么回事??
是不是对于JQUERY自己无刷新,新增的记录存在遍利的问题????
------解决方案--------------------
楼主,我测试了没有出现你说的问题锕。我用IE7,8,9和火狐测试都没问题,测试代码如下
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
function add() {
$("#tableId tr:first").before("<tr><td>" + (new Date().getMilliseconds()) + "</td></tr>");
$("#tableId tr:last").remove();
}
</script>
</head>
<body>
<table border="1" id="tableId">
<tr><td>1</td></tr>
<tr><td>2</td></tr>
<tr><td>3</td></tr>
<tr><td>4</td></tr>
<tr><td>5</td></tr>
<tr><td>6</td></tr>
<tr><td>7</td></tr>
<tr><td>8</td></tr>
<tr><td>9</td></tr>
<tr><td>10</td></tr>
</table>
<input type="button" value="add" onclick="add()" />
</body>
</html>
------解决方案--------------------JScript code
function addRow() {
var r = workTable.rows.length;
if (r< 10) {
//添加一行
var newTr = workTable.insertRow();
//添加两列
var newTd0 = newTr.insertCell();
var newTd1 = newTr.insertCell();
//设置列内容和属性
newTd0.innerText =r+1;
newTd1.innerHTML = '<input type=text class="txt"/>';
r++;
} else {
alert("最多添加10条记录!");
return;
}
}
//var row = document.getElementById('workTable').rows.length - 1;
function delRow() {
var r = workTable.rows.length;
if (r> 5) {
//workTable.deleteRow(i);
document.getElementById('workTable').deleteRow(r-1);
r--;
} else {
alert("剩余5条记录不能删除!");
}
}
------解决方案--------------------
程序逻辑没有问题。
但是我个人建议你 先删除后新增,保你百试不爽。
$("#tableId tr:last").remove();
$("#tableId tr:first").before("<tr><td>asdf</td></tr>");
------解决方案--------------------
JScript code
//也可以用prepend新增行试试:
$("#tableId").prepend('<tr><td>asdf</td></tr>');