模态对话框-终极版
实现了动态添加,删除。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.hide{
display:none;
}
.model{
position:fixed;
top:50%;
left:50%;
width:500px;
height:400px;
margin-left:-250px;
margin-top:-250px;
background-color:#eeeeee;
z-index:10;
}
.shadow{
position:fixed;
top:0;
left:0;
right:0;
bottom:0;
opacity:0.6;
background-color:black;
z-index:9;
}
</style>
</head>
<body>
<a onclick="addElement();">添加</a>
<table border="1px" id="tb">
<tr>
<td>1.1.1.11</td>
<td>80</td>
<td>
<a class="edit">编辑</a> | <a class="del">删除</a>
</td>
</tr>
<tr>
<td>1.1.1.12</td>
<td>80</td>
<td>
<a class="edit">编辑</a> | <a class="del">删除</a>
</td>
</tr>
<tr>
<td>1.1.1.13</td>
<td>80</td>
<td>
<a class="edit">编辑</a> | <a class="del">删除</a>
</td>
</tr>
</table>
<div class="model hide">
<div>
<input name="hostname" type="text"/>
<input name="port" type="text"/>
<input type="text"/>
</div>
<div>
<input type="button" value="取消" onclick="cancelModel();"/>
<input type="button" value="确定" onclick="confirmModel();"/>
</div>
</div>
<div class="shadow hide"></div>
<script src="jquery-1.12.4.js"></script>
<script>
$('.del').click(function(){
$(this).parent().parent().remove();
})
function confirmModel(){
var tr=document.createElement('tr');
var td1=document.createElement('td');
td1.innerHTML='1.1.1.333';
var td2=document.createElement('td');
td2.innerHTML='8001';
$(tr).append(td1);
$(tr).append(td2);
$('#tb').append(tr);
$(".model,.shadow").addClass('hide');
$('.model input[type="text"]').each(function(){
//var temp="<td>.."
var td=document.createElement('td');
td.innerHTMl='用户输入的值';
})
}
function addElement(){
//$('.model').removeClass('hide');
//$('.shadow').removeClass('hide');
$('.model,.shadow').removeClass('hide');
}
function cancelModel(){
$('.model,.shadow').addClass('hide');
$('.model input[type="text"]').val("");
}
$('.edit').click(function(){
$('.model,.shadow').removeClass('hide');
//this 当前点击的标签
var tds=$(this).parent().prevAll(); //tds是个列表,里面是2个td,内容是port,host
var port=$(tds[0]).text();
var host=$(tds[1]).text();
$('.model input[name="hostname"]').val(host);
$('.model input[name="port"]').val(port);
//循环获取tds中的内容,赋值给input标签里面的value。cancel.log(tds[0])=80;
});
</script>
</body>
</html>

按照自己的逻辑写的版本,还有2个地方需要调试。
1) 点击完编辑以后,会增加新的一行,而原数据行还是保留。
2) 新增加的行,没有绑定edit del 事件,所以程序需要用delegate进行绑定。
$('.c1').delegate('a','click',function(){}) #不同于其它,有委托的作用。 .c1 下面所有的a 标签都绑定click事件。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<style>
.hide{
display:none;
}
.shadow{
position:fixed;
top:0;
left:0;
right:0;
bottom:0;
background-color:black;
opacity:0.6;
z-index:9;
}
.model{
position:fixed;
top:50%;
left:50%;
width:500px;
height:400px;
margin-left:-200px;
margin-top:-200px;
background-color:#eeeeee;
z-index:10;
}
</style>
</head>
<body>
<div class="addElement">添加</div>
<table id="tb" border="1px">
<tr>
<td>1.1.1.1</td>
<td>80</td>
<td>
<a class="edit">编辑</a>|<a class="del">删除</a>
</td>
</tr>
<tr>
<td>1.1.1.2</td>
<td>80</td>
<td>
<a class="edit">编辑</a>|<a class="del">删除</a>
</td>
</tr>
<tr>
<td>1.1.1.3</td>
<td>80</td>
<td>
<a class="edit">编辑</a>|<a class="del">删除</a>
</td>
</tr>
</table>
<div class="shadow hide"></div>
<div class="model hide">
<input name="hostname" type="text">
<input name="port" type="text">
<input type="text">
<input type="button" value="确定">
<input type="button" value="取消">
</div>
<script src="jquery-1.12.4.js"></script>
<script>
$('.addElement').click(function(){
$('.shadow,.model').removeClass('hide');
$('.model input[type="text"]').val("");
})
$('.model input[value="取消"]').click(function(){
$('.shadow,.model').addClass('hide');
})
$('.model input[value="确定"]').click(function(){
var host=$('.model input[name="hostname"]').val();
var port=$('.model input[name="port"]').val();
var tr=document.createElement('tr');
var td1=document.createElement('td');
td1.innerHTML=host;
var td2=document.createElement('td');
td2.innerHTML=port;
$(tr).append(td1);
$(tr).append(td2);
$('#tb').append(tr);
$('.shadow,.model').addClass('hide');
})
$('.edit').click(function(){
$('.shadow,.model').removeClass('hide');
var tds=$(this).parent().prevAll();
var port=$(tds[0]).text();
var host=$(tds[1]).text();
$('.model input[name="hostname"]').val(host);
$('.model input[name="port"]').val(port);
})
$('.del').click(function(){
$(this).parent().parent().remove();
})
</script>
</body>
</html>
浙公网安备 33010602011771号