模态对话框-终极版

实现了动态添加,删除。

<!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>

 

posted on 2017-09-03 10:22  momo8238  阅读(187)  评论(0编辑  收藏  举报