jQuery實(shí)現(xiàn)對(duì)網(wǎng)頁(yè)節(jié)點(diǎn)的增刪改查功能示例
本文實(shí)例講述了jQuery實(shí)現(xiàn)對(duì)網(wǎng)頁(yè)節(jié)點(diǎn)的增刪改查功能。分享給大家供大家參考,具體如下:
前面介紹過(guò)《JavaScript針對(duì)網(wǎng)頁(yè)節(jié)點(diǎn)的增刪改查用法》,其實(shí)JavaScript對(duì)DOM的操作已經(jīng)總結(jié)了很久的,而對(duì)于jQuery對(duì)網(wǎng)頁(yè)節(jié)點(diǎn)的操作,雖然一直在用,但一直沒(méi)有好好總結(jié)一下,實(shí)在是不應(yīng)該。
下面舉同樣的例子來(lái)說(shuō)明這個(gè)問(wèn)題:

如上圖,提供3個(gè)按鈕,1個(gè)下拉列表,1個(gè)輸入框,提供增刪改查的操作。
網(wǎng)頁(yè)中最多10個(gè)節(jié)點(diǎn),最少0個(gè)節(jié)點(diǎn),多了不讓加,少了不讓減。
首先是本網(wǎng)頁(yè)的基本布局:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>jQuery對(duì)網(wǎng)頁(yè)節(jié)點(diǎn)的增刪改查</title>
<script type="text/javascript" src="js/jquery-1.11.1.js"></script>
</head>
<body>
<button>增加節(jié)點(diǎn)</button>
選擇節(jié)點(diǎn)
<select id="nodeList"></select>
<button>刪除節(jié)點(diǎn)</button>
<input type="text" />
<button>修改節(jié)點(diǎn)</button>
<div></div>
</body>
</html>
首先引入jQuery資源,之后,除了下拉列表以外其余節(jié)點(diǎn)沒(méi)有ID,以展示兩個(gè)Jquery獲取節(jié)點(diǎn)的方式,一種通過(guò)id直接獲取,一種通過(guò)獲取子節(jié)點(diǎn)的方式的獲取。
這里沒(méi)什么特別的,關(guān)鍵是下面的jQuery編程:
<script type="text/javascript">
var i = 1;//定義一個(gè)節(jié)點(diǎn)的id
$("body>div").css("border","1px solid #cccccc");//先把body下面的所有div的上style="border:1px solid #cccccc"屬性。此乃jQuery對(duì)節(jié)點(diǎn)的css操作。
$("body>button:eq(0)").click(function(){//body下面的第0個(gè)按鈕的onclick事件
if (i < 11) {//如果節(jié)點(diǎn)數(shù)少于在1-10之間
$("body>div").append("<p id='p" + i + "'>text" + i + "</p>");//則在body下面的所有div,也就是唯一一個(gè)div中添加上id=p1,p2,p3...的節(jié)點(diǎn),且文本為text1,2,3...
$("#nodeList").append("<option id='option" + i + "' value='" + i + "'>text" + i + "</p>");//同時(shí)在下拉列表中加上id=option1,option2....,value=1,2,3...的選項(xiàng),一會(huì)兒,供下面的修改、刪除使用
i++;//節(jié)點(diǎn)數(shù)加1
$("body>div").css("border","1px solid #cccccc");//如果符合要求,使邊框變灰
}
else {//如果不符合要求,彈出警告,使邊框變紅
alert("最多10個(gè)節(jié)點(diǎn)!");
$("body>div").css("border","1px solid #ff0000");
}
});
$("body>button:eq(1)").click(function(){//body下面的第1個(gè)按鈕的onclick事件
if (i > 1) {
var removeId = $("#nodeList").val();//獲取要下拉列表中的值
$("#option" + removeId).remove();//刪除相應(yīng)的選項(xiàng)、p節(jié)點(diǎn)
$("#p" + removeId).remove();
i--;//節(jié)點(diǎn)數(shù)減1
$("body>div").css("border","1px solid #cccccc");
}
else{
alert("最少0個(gè)節(jié)點(diǎn)!");
$("body>div").css("border","1px solid #ff0000");
}
});
$("body>button:eq(2)").click(function(){//body下面的第2個(gè)按鈕的onclick事件
if (i > 1) {
var updateText = $("body>input[type='text']").val();//獲取文本框的輸入內(nèi)容
var updateId = $("#nodeList").val();//獲取下拉拉列表中的值
var updateFlag = true;//用來(lái)驗(yàn)證是否有同名節(jié)點(diǎn)的flag
$("body>div>p").each(function(){//遍歷div下的所有p節(jié)點(diǎn)
if(updateText==$(this).html()){//如果輸入的值等于p節(jié)點(diǎn)的值
alert("已有同名節(jié)點(diǎn),不得修改!");//則彈出警告
$("body>div").css("border", "1px solid #ff0000");
updateFlag = false;//收起flag
}
});
if (updateFlag) {
if (updateText != "") {
$("#option" + updateId).html(updateText);//修改下拉列表中的值
$("#p" + updateId).html(updateText);//修改相應(yīng)p節(jié)點(diǎn)的值
$("body>input[type='text']").val("");//清空輸入框
$("body>div").css("border", "1px solid #cccccc");
}
else {
alert("修改內(nèi)容不得為空!");
$("body>div").css("border", "1px solid #ff0000");
}
}
}
else{
alert("沒(méi)有節(jié)點(diǎn),修改毛線(xiàn)!");
$("body>div").css("border", "1px solid #ff0000");
}
});
</script>
可以看到,這里jQuery設(shè)置css是先指明要修改的css屬性,再寫(xiě)上要修改的內(nèi)容,Javascript修改css則是對(duì)節(jié)點(diǎn)的style修改。
jQuery對(duì)節(jié)點(diǎn)的遍歷,用each方法則可以。Javascript則要對(duì)要遍歷的節(jié)點(diǎn),賦予name,然后利用document.getElementbyName將所有name拿下,則進(jìn)行遍歷。
jQuery刪除一個(gè)節(jié)點(diǎn),比Javascript簡(jiǎn)便多了,一個(gè)remove()搞掂一切,Javascript則要找自己的父節(jié)點(diǎn)測(cè)能刪除自己。
jQuery找子節(jié)點(diǎn),可以直接用>符號(hào)來(lái)查看,Javascript則要通過(guò)xx.getElementsByTagName去查找。
更多關(guān)于jQuery相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《jQuery操作DOM節(jié)點(diǎn)方法總結(jié)》、《jQuery頁(yè)面元素操作技巧匯總》、《jQuery常用插件及用法總結(jié)》、《jQuery表格(table)操作技巧匯總》、《jQuery擴(kuò)展技巧總結(jié)》、《jQuery常見(jiàn)經(jīng)典特效匯總》及《jquery選擇器用法總結(jié)》
希望本文所述對(duì)大家jQuery程序設(shè)計(jì)有所幫助。
相關(guān)文章
jQuery Ajax 加載數(shù)據(jù)時(shí)異步顯示加載動(dòng)畫(huà)
這篇文章主要介紹了jQuery Ajax 加載數(shù)據(jù)時(shí)異步顯示加載動(dòng)畫(huà)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08
jquery append()方法與html()方法的區(qū)別及使用介紹
append()方法在被選元素的結(jié)尾插入指定內(nèi)容,html()方法返回或設(shè)置被選元素的內(nèi)容,下面為大家介紹下兩者的區(qū)別及使用2014-08-08
JavaScript的jQuery庫(kù)插件的簡(jiǎn)要開(kāi)發(fā)指南
這篇文章主要介紹了JavaScript的jQuery庫(kù)插件的簡(jiǎn)要開(kāi)發(fā)指南,分為基于選擇器的插件和不基于選擇器的插件兩種情況,需要的朋友可以參考下2015-08-08
jQuery實(shí)現(xiàn)簡(jiǎn)單的DIV拖動(dòng)效果
這篇文章主要介紹了jQuery實(shí)現(xiàn)簡(jiǎn)單的DIV拖動(dòng)效果,涉及jQuery針對(duì)鼠標(biāo)事件的響應(yīng)及頁(yè)面元素的動(dòng)態(tài)操作技巧,需要的朋友可以參考下2016-02-02

