jQuery基础_DOM节点操作

一、创建节点

$("<html></html>");

如:$("<p id='name'><a href='##'/></p>");

二、插入节点

增加环绕节点
方法 说明 
wrap()  用指定结构的元素包裹元素
wrapAll() 用指定结构的元素包裹多个元素
wrapInner() 用指定结构元素包裹元素的内容

 

<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style>
			div{
				border: 1px solid red;
			}
			p{
				background:yellow; accelerator;
				margin: 4px;
			}
		</style>
	</head>
	
	<body>
		<p>Hello</p>
		<p>cruel</p>
		<p>World</p>
		<script type="text/javascript">
		//warp() 包裹着指定元素
		$("p").wrap("<div></div>");

 

		//wrapAll() 将元素一起包裹 注:如果是不连续的元素 会吧中间隔开的元素挤到最下面
		$("p").wrapAll("<div></div>");

 

		//wrapInner()
		$("p").wrapInner("<b></b>");

 

		</script>
	</body>
</html>

三、节点内部插入

节点内部插入
方法 说明
append() 向每个匹配元素内部的最后面添加元素
appendTo()  将所有匹配的元素追加到指定的元素中
prepend() 向每个匹配的元素内部最前面添加指定元素
prependTo() 将所有匹配的元素添加到指定元素内部的最前面

 

		
    append();//前者为已有父元素  后者为需要添加到父元素的子元素
        $("#demo").append($("<p>aaa</p>"));

appendTo();//前者为需要添加到父元素的子元素 后者为指定的父元素 $($("<p>bbb</p>")).appendTo($("#demo"));

  

  //与上面同理 只是这个是添加到最前面
  prepend()
   $("#demo").prepend($("<p>ccc</p>"));
  prependTo()
    $($("<p>ddd</p>")).prependTo($("#demo"));

四、节点外部插入

节点外部插入
方法 说明
after() 在每个匹配的元素之后插入内容
inserAfter() 将所有匹配的元素插入到指定元素的后面
before() 在每个匹配的元素之前插入内容
insertBefore() 将所有匹配的元素插入到指定元素的前面

 

  after()//前者为已有的哥哥元素  后者为需要添加到哥哥元素下面的弟弟元素
     $(".demo").after($("<p>aaaaa</p>"));
  insertAfter()//前者为需要添加到哥哥元素下面的弟弟元素,后者是指定的哥哥元素
    $("<p>cccc</p>").insertAfter($(".demo"));

  

  after()//前者为已有的弟弟元素  后者为需要添加到弟弟元素上面的哥哥元素
      $(".demo").before($("<p>aaaaa</p>"));
  insertAfter()//前者为需要添加到弟弟元素上面的哥哥元素,后者是指定的弟弟元素
     $("<p>cccc</p>").insertBefore($(".demo"));

五、替换节点

replaceWith();

replaceAll();

   二者替换的效果一样 只是语法不同而已
如:
            replaceWith() //$(被替换的元素).replaceWith($(替换的元素))
            $(".demo").replaceWith($("<button>替换</button>"));
replaceAll() //$(替换的元素).replaceAll($(被替换的 元素)) $("
<button>替换</button>").replaceAll($(".demo"));

六、复制插入

clone(withDataAndEvents,deepWithDataAndEvents)

  withDataAndEvents: 事件和数据是否被复制  默认:  false

   deepWithDataAndEvents: 深度复制,子元素的事件和数据是否被复制  默认:  false

注:此方法只能用于复制 将复制的元素添加到页面需要用插入节点的方法

七、删除节点

删除节点
方法 说明
unwrap(); 用于删除指定节点的父元素 可配合wrap()方法使用
empty(); 用于删除指定元素的子元素
remove(); 从DOM中删除包装集中的所有元素
detach(); 与remove()的方法相同 但是会保留元素相关联的数据和事件

八、案例

8.1、商品管理案例

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title>商品管理</title>
        <style type="text/css">
            fieldset {
                border-radius: 10PX;
                width: 400PX;
                height: 200PX;
                margin: auto;
            }
            
            table {
                margin: auto;
                text-align: left;
            }
            
            th {
                font-size: 12PX;
            }
            
            td {
                width: 310PX;
            }
            
            span {
                font-size: 10PX;
                color: red;
            }
            
            #year,
            #day,
            #month {
                width: 55PX;
            }
            
            #hint {
                margin-left: 17PX;
                font-size: 10PX;
                color: red;
            }
            
            #com th {
                text-align: center;
                width: 150PX;
            }
            
            #com td {
                text-align: center;
                width: 150PX;
                height: 20PX;
            }
        </style>
    </head>

    <body>
        <table id="com" border="1">
            <tr>
                <th><input type="checkbox" id="check" />全选</th>
                <th>商品编号</th>
                <th>名称</th>
                <th>价格</th>
                <th>上货日期</th>
                <th>是否下架</th>
                <th>操作</th>
            </tr>
        </table>
        <fieldset>
            <legend>商品详细</legend>
            <table>
                <tr>
                    <th>商品编号</th>
                    <td><input type="text" id="comID">&nbsp;<span>*只能输入九位字符</span></td>
                </tr>
                <tr>
                    <th>商品名称</th>
                    <td><input type="text" id="comName">&nbsp;<span>*长度只能是1-30位</span></td>
                </tr>
                <tr>
                    <th>商品价格</th>
                    <td><input type="text" id="comPrice">&nbsp;<span>*只能输入正数 ,如:0.98</span></td>
                </tr>
                <tr>
                    <th>上货日期</th>
                    <td>
                        <select id="year">
                            <option value="2018">2018</option>
                        </select>
                        <select id="month">
                            <option value="1">1</option>
                        </select>
                        <select id="day">
                            <option value="1">1</option>
                        </select>&nbsp;<span>*必须选择</span>
                    </td>
                </tr>
                <tr>
                    <th>是否下架</th>
                    <td><input name="YN" type="radio" id="y"  value="y">是 <input name="YN" type="radio" id="n" checked value="n">否</td>
                </tr>
                <tr>
                    <td colspan="2" style="text-align: center;"><input type="button" value="添加" id="add"> <input type="button" value="修改" id="update"> <input type="button" value="删除" id="delete"></td>
                </tr>
                <tr>
                    <td colspan="2">
                        <p id="hint"></p>
                    </td>
                </tr>
            </table>
        </fieldset>

        <script type="text/javascript" src="../../js/jquery-1.11.3.min.js"></script>
        <script type="text/javascript">
            $(function() {
                var d = new Date();
                $("#year").val(d.getFullYear());
                $("#month").val((d.getMonth() + 1));
                $("#day").val(d.getDate());
            })
            var com = {
                //所有商品详细信息列表
                commodity: [{
                        comid: "SIS001",
                        comname: "QQ糖",
                        comprice: "5",
                        comtime: "2018/5/29",
                        yn: "n"
                    },
                    {
                        comid: "SIS002",
                        comname: "大白兔奶糖",
                        comprice: "45",
                        comtime: "2018/5/29",
                        yn: "y"
                    },
                    {
                        comid: "SIS003",
                        comname: "鱼仔仔",
                        comprice: "10",
                        comtime: "2018/5/20",
                        yn: "y"
                    },
                    {
                        comid: "SIS004",
                        comname: "旺仔牛奶",
                        comprice: "60",
                        comtime: "2018/5/29",
                        yn: "n"
                    }
                ],
                
                //添加与修改商品信息
                addCom: function(test) {
                    if(com.verifyCom()){
                        $("#add").prop("disabled",false);
                        var comId = $("#comID").val();
                        var comName = $("#comName").val();
                        var comPrice = $("#comPrice").val();
                        var year = $("#year").val();
                        var month = $("#month").val();
                        var day = $("#day").val();
                        var ynyn=$("[name='YN']:checked").val();
                        
                        if(comId == "" || comName == "" || comPrice == "") {
                            $("#hint").html("不能为空");
                        } else {
                            if(test == null) {
                                var commodity = {
                                    comid: comId,
                                    comname: comName,
                                    comprice: comPrice,
                                    comtime: "" + year + "/" + month + "/" + day + "",
                                    yn:ynyn,
                                }
                                //追加到商品对象中
                                com.commodity.push(commodity);
                            } else {
                                test.comid = comId;
                                test.comname = comName;
                                test.comprice = comPrice;
                                test.comtime = year + "/" + month + "/" + day;
                                test.yn = ynyn;
                                //{comid:"SIS001",comname:"QQ糖",comprice:"5",comtime:"2018/5/29",yn:"y"},
                            }
                            com.allCom();
                            $("#comID").val("");
                            $("#comName").val("");
                            $("#comPrice").val("");
                        }
                    }
                },

                //删除商品
                deleteCom: function(obj) {
                    var index = $(obj).data("index");
                    com.commodity.splice(index, 1);
                    $(obj).closest("tr").remove();
                },

                //删除单个商品信息
                delCom: function(I) {
                    com.deleteCom(I);
                },

                //删除多个商品信息
                delAllCom: function() {
                    //获取所有被选中的checkbox
                    var items = $("input[name='comCheck']:checked");
                    if(items.size()>0){
                        if(confirm('您确定要删除吗?')) {                        
                            for(var i = items.size()-1; i >= 0; i--) {
                                com.deleteCom(items[i]);
                            }
                        }
                    }else{
                        alert("请至少选中一个!")
                    }
                },

                
                //将商品信息添加到详细列表
                addAllCom: function(I) {
                    var index = $(I).data("index");
                    var comm = com.commodity[index];
                    $("#comID").val(comm.comid);
                    $("#comName").val(comm.comname);
                    $("#comPrice").val(comm.comprice);
                    var date=comm.comtime;
                    var time=date.split('/');
                    $("#year").val(time[0]);
                    $("#month").val(time[1]);
                    $("#day").val(time[2]);
                    if(comm.yn=='y'){
                        $("#y").prop("checked",true);
                    }else{
                        $("#n").prop("checked",true);
                    }
                    $("#add").prop("disabled",true);
                    com.index = index;
                },

                //修改某个商品信息
                updateCom: function() {
                    com.addCom(com.commodity[com.index]);
                    com.index = -1;
                },

                //渲染全部商品信息
                allCom: function() {
                    $("#com tr:gt(0)").remove();
                    $.each(com.commodity, function(index, obj) {
                        var tr = $("<tr/>");
                        var inptd = $("<td/>")
                        $("<input name='comCheck' class='comCheck' type='checkbox'/>").html(obj.comtime).appendTo(inptd);
                        inptd.appendTo(tr)
                        $("<td/>").html(obj.comid).appendTo(tr);
                        $("<td/>").html(obj.comname).appendTo(tr);
                        $("<td/>").html(obj.comprice).appendTo(tr);
                        $("<td/>").html(obj.comtime).appendTo(tr);
                        var inputtd = $("<td/>")
                        
                        if(obj.yn=='y'){
                            $("<input  name='yn' checked='' value='y' type='checkbox'/>").html(obj.comtime).appendTo(inputtd);
                        }
                        else{
                                $("<input  name='yn' type='checkbox'/>").html(obj.comtime).appendTo(inputtd);
                        }
                        inputtd.appendTo(tr)
                        var atd = $("<td/>")
                        $("<a href='#'class='aupdate'></a> ").html("详细    ").appendTo(atd).data("index", index);
                        $("<a href='#' class='adel'></a> ").html("   删除").appendTo(atd).data("index", index);
                        atd.appendTo(tr);
                        $("#com").append(tr);
                    });

                },

                //全选操作与取消全选操作
                allCheck: function() {
                    $("[name='comCheck']").prop("checked", $(this).prop("checked"));
                    //$("[name='check']").prop("checked",$(this).prop("checked"));
                },

                //根据下面是否全选来确定什么选不选
                allcomCheck: function() {
                    var mode = true;
                    for(var i = 0; i < $(".comCheck").size(); i++) {
                        if(!$($("[name='comCheck']")[i]).prop("checked"))
                            mode = false;
                    }
                    if(mode)
                        $("#check").prop("checked", true);
                    else
                        $("#check").prop("checked", false);
                },

                //验证数据信息是否符合规定
                verifyCom:function(){
                    
                    $("#hint").html("");
                    var comId = $("#comID").val();
                    var comName = $("#comName").val();
                    var comPrice = $("#comPrice").val();
                    if(!(/^.{9}$/.test(comId))){            
                        $("#hint").html("商品ID必须是九位字符");
                        return false;
                    }
                    if(!(/^.{1,9}$/.test(comName))){            
                        $("#hint").html("商品名称必须是1-30位字符");
                        return false;
                    }
                    if(!(/^[\d]?[\.]+[\d]{1,}$/.test(comPrice))){            
                        $("#hint").html("必须为正数");
                        return false;
                    }
                    return true;
                },

                //事件的绑定
                start: function() {
                    //添加元素
                    $("#add").click(function() {
                        com.addCom(null);
                    });

                    //单个删除商品
                    $("#com").on("click", ".adel", function() {
                        if(confirm('您确定要删除吗?')) {
                            com.delCom(this);
                        }

                    });

                    //多个删除商品
                    $("#delete").click(com.delAllCom);

                    //将值放入到详细列表中
                    $("#com").on("click", ".aupdate", function() {
                        com.addAllCom(this);
                    })

                    //修改某个商品信息
                    $("#update").click(com.updateCom);
                        
                    //是否全选
                    $("#check").click(com.allCheck);
                    $("#com").on("click", '.comCheck', function() {
                        com.allcomCheck();
                    })

                    //加载所有信息
                    com.allCom();
                },

                index: -1,
            }
            com.start();
        </script>

    </body>

</html>


 

posted @ 2018-05-31 14:07  NiuBiHH  阅读(366)  评论(1编辑  收藏  举报
levels of contents