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"> <span>*只能输入九位字符</span></td>
</tr>
<tr>
<th>商品名称</th>
<td><input type="text" id="comName"> <span>*长度只能是1-30位</span></td>
</tr>
<tr>
<th>商品价格</th>
<td><input type="text" id="comPrice"> <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> <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>


浙公网安备 33010602011771号