?
页面效果如下:
?

?
HTML代码如下:
?
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jQuery实现行上下移动并删除(顺序不变)</title>
<style>
.rowNum {width:10px;text-align:center;border:none}
.btn {width:10px;text-align:center}
td {padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px}
</style>
</head>
<body>
<table id="tbHide" style="display:none">
<tr id="trHide"></tr>
</table>
<table border="1" id="tbShow">
<thead>
<tr>
<th>No</th>
<th>Name</th>
<th colspan="3">操作</th>
<th>Id</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>First</td>
<td><input type="button" name="btnUp" value="↑" onclick="move(this)"></td>
<td><input type="button" name="btnDown" value="↓" onclick="move(this)"></td>
<td><input type="button" name="btnDel" value="×" onclick="move(this)"></td>
<td><input type="text" name="rowNum" value="1" readonly class="rowNum"></td>
</tr>
<tr>
<td>2</td>
<td>Second</td>
<td><input type="button" name="btnUp" value="↑" onclick="move(this)"></td>
<td><input type="button" name="btnDown" value="↓" onclick="move(this)"></td>
<td><input type="button" name="btnDel" value="×" onclick="move(this)"></td>
<td><input type="text" name="rowNum" value="2" readonly class="rowNum"></td>
</tr>
<tr>
<td>3</td>
<td>Third</td>
<td><input type="button" name="btnUp" value="↑" onclick="move(this)"></td>
<td><input type="button" name="btnDown" value="↓" onclick="move(this)"></td>
<td><input type="button" name="btnDel" value="×" onclick="move(this)"></td>
<td><input type="text" name="rowNum" value="3" readonly class="rowNum"></td>
</tr>
<tr>
<td>4</td>
<td>Forth</td>
<td><input type="button" name="btnUp" value="↑" onclick="move(this)"></td>
<td><input type="button" name="btnDown" value="↓" onclick="move(this)"></td>
<td><input type="button" name="btnDel" value="×" onclick="move(this)"></td>
<td><input type="text" name="rowNum" value="4" readonly class="rowNum"></td>
</tr>
<tr>
<td>5</td>
<td>Fifth</td>
<td><input type="button" name="btnUp" value="↑" onclick="move(this)"></td>
<td><input type="button" name="btnDown" value="↓" onclick="move(this)"></td>
<td><input type="button" name="btnDel" value="×" onclick="move(this)"></td>
<td><input type="text" name="rowNum" value="5" readonly class="rowNum"></td>
</tr>
</tbody>
</table>
</body>
</html>
?
JavaScript如下:
?
<script>
var tempSelector = "td:last-child input[name=rowNum]";
// Button点击
function move(obj){
var btnType = $(obj).attr("name");
var currRow = $(obj).parent().parent();
if(btnType == "btnUp"){
moveUpCommand(currRow);
}else if(btnType == "btnDown"){
moveDownCommand(currRow);
}else if(btnType == "btnDel"){
delRowOperate(currRow);
}
}
// move up
function moveUpCommand(currRow){
var firstTr = $("#tbShow tbody tr:first-child");
var firstTrNo = Number($(firstTr).find(tempSelector).val());
var currRowNo = Number($(currRow).find(tempSelector).val());
if(currRowNo == firstTrNo){
return;
}else{
moveUpOperate(currRow);
}
}
// move down
function moveDownCommand(currRow){
var lastTr = $("#tbShow tbody tr:last-child");
var lastTrNo = Number($(lastTr).find(tempSelector).val());
var currRowNo = Number($(currRow).find(tempSelector).val());
if(currRowNo == lastTrNo){
return;
}else{
moveDownOperate(currRow);
}
}
// delete row
function delRowOperate(currRow){
$(currRow).nextAll().each(function(){
$(this).find(tempSelector).val(Number($(this).find(tempSelector).val())-1);
});
$(currRow).remove();
}
// move up operate
function moveUpOperate(currRow){
var tempRow = $("#trHide").html($(currRow).html());
var prevRow = $(currRow).prev();
var prevRowNo = $(prevRow).find(tempSelector).val();
var tempRowNo = $(tempRow).find(tempSelector).val();
// current row
$(prevRow).find(tempSelector).val(Number(prevRowNo)+1);
$(currRow).html("").append($(prevRow).html());
// previous row
$(tempRow).find(tempSelector).val(Number(tempRowNo)-1);
$(prevRow).html("").append($(tempRow).html());
$("#trHide").html("");
}
// move down operate
function moveDownOperate(currRow){
var tempRow = $("#trHide").html($(currRow).html());
var nextRow = $(currRow).next();
var nextRowNo = $(nextRow).find(tempSelector).val();
var tempRowNo = $(tempRow).find(tempSelector).val();
// current row
$(nextRow).find(tempSelector).val(Number(nextRowNo)-1);
$(currRow).html("").append($(nextRow).html());
// next row
$(tempRow).find(tempSelector).val(Number(tempRowNo)+1);
$(nextRow).html("").append($(tempRow).html());
$("#trHide").html("");
}
</script>
?
?