<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <script type="text/javascript" src="js/jquery-1.3.1.js"></script> <script type="text/javascript"> /* * jquery對象是對dom對象的一種包裝類,dom和jquery對象不能夠互相調用(js輕量級框架) * 區分大小寫:jquery找不到對象的話不會報錯(dom會報錯undefine) */ function show(){ var domValue=document.getElementById("info").value; //dom對象 alert("dom*******"+domValue); var $jquery=$('#info'); //jquery對象:表示id=info全部元素集合 var jqueryValue=$jquery[0].value; //$jquery[0]:將jquery對象轉換成dom對象 alert("jquery*****"+jqueryValue); } </script> </head> <body><br> <img alt="" src="img/1.jpg"><br> <input type="text" id="info"> <input type="button" value="顯示" onclick="show();"/> </body> </html>
DOM 是 Document Object Model(文檔對象模型)的縮寫,瀏覽器在解析HTML文檔時會將HTML文檔在內存中映射成一個邏輯模型DOM樹,每一個HTML的標籤都是該DOM樹上的葉子,瀏覽器解析時根據節點在DOM樹上的狀況按照相應的規範進行渲染顯示。javascript
HTML DOM節點操做:css
定義輸入框和列表節點:html
<ul id="city"> <li id="bj" value="beijing">北京</li> <li id="sh" value="shanghai">上海</li> <li id="gz" value="guangzhou">廣州</li> </ul><br/> <span style="background-color: yellow;">span01----</span>Dom Tree<span style="background-color: yellow;">----span02</span>
單個Node節點操做:java
/*append:相似於DOM裏面的appendChild()函數,將新元素加入該元素內部作爲子節點 *appned:父元素內部加入子元素 *appendTo:子元素追加到父元素內部 */ $("#b1").click(function(){ var LiNode=$("<li></li>"); //構造Li元素節點 LiNode.attr("id","sz"); LiNode.attr("value","shenzhen"); LiNode.text("深圳"); $("#city").append(LiNode); }); /** * before:兄弟元素以前加入新的元素 * after:兄弟元素以後加入新的兄弟元素 * insertAfter:新元素加入存在的兄弟元素後面 * insertBefore:新元素加入存在的兄弟元素前面 */ $("#b2").click(function(){ var LiNode=$("<li id='sz' value='shenzhen'><font color='aquamarine'>深圳</font></li>"); LiNode.insertAfter($("#gz")); }); $("#b3").click(function(){ var LiNode=document.createElement("li"); LiNode.setAttribute("id","sz"); LiNode.setAttribute("value","shenzhen"); LiNode.innerHTML="深圳"; document.getElementById("gz").appendChild(LiNode); }); $("#b4").click(function(){ var LiNode=$("<li id='sz' value='shenzhen'><font color='#FF0000'>深圳</font></li>"); $("#sh").before(LiNode); });
效果圖:jquery
Node節點類處理:瀏覽器
//清除全部的span元素節點 $("#b5").click(function(){ $("span").empty(); //清空元素節點內容 setTimeout(function(){ //$("span").remove(); //刪除元素節點 $("<button>span替換節點</button>").replaceAll($("span")); },5000); }); /** * clone:默認淺克隆,只會簡單克隆元素的屬性 * clone(true):深克隆,元素的屬性和方法都會進行復制,屬於完整獨立空間 */ $("#b6").click(function(){ $("#b6").after($("#b5").clone(true)); });
效果圖:app
注意:這裏設置定時器的操做主要是爲了更好顯示清空(並不是刪除節點)、替換節點的效果。框架
dom.css:dom
.one{ width: 140px; height: 140px; margin: 20px; background: red; border: #000 1px solid; float:left; font-size: 17px; font-family:Roman; } .two{ width: 80px; height: 80px; margin: 20px; background: yellow; border: #000 1px solid; float:left; font-size: 17px; font-family:Roman; }
引入層疊樣式表dom.css:函數
<link rel="stylesheet" href="js/dom.css" type="text/css"/>
界面
<input type="button" value="first獲取元素樣式" id="b1"/><br> <input type="button" value="second追加元素樣式" id="b2"/><br> <input type="button" value="first移除樣式:(刪除id爲first的.one 樣式) " id="b3"/><br> <input type="button" value="first樣式切換" id="b4"/><br> <input type="button" value="second判斷元素樣式" id="b5"/><br> <div id="first" class="one">id="first" class="one" <div class="two">first-first</div> </div> <div id="second">id="second"</div> <br> <a href="www.sohu.com">sohu</a>
js操做邏輯
/* *attr(name):獲取元素屬性爲name的值 *attr(key,value);給元素增長屬性key,屬性值爲value */ $("#b1").click(function(){ var $obj=$("#first").attr("class"); alert("class屬性值:"+$obj); }); $("#b2").click(function(){ //$("#second").attr("class","two"); //$("#first").attr("class","two"); //若原元素中含有相同屬性,則會被覆蓋 //方法2 $("#second").addClass("two"); }); $("#b3").click(function(){ //$("#first").removeClass(); //等價於$("#first").removeClass("one"); $("#first").removeAttr("class"); }); $("#b4").click(function(){ $("#first").toggleClass("two"); //新舊樣式切換 }); $("#b5").click(function(){ alert("second應用.two樣式:"+$("#second").hasClass("two")); //進行添加屬性操做後true:dom樹在內存運行,不會改變源碼 }); //$href = $('a').attr('href');
效果:
Jquery表單元素的動態增加的主要原理是經過構建新的Dom節點添加到原先的Dom樹,從而實現相應的效果。
Dom節點動態建立:
<form action="" id="todoForm" > <label>請在下列輸入框中輸入內容:</label><br> <input type="text" id="todoInput"> <input type="submit" value="提交"> </form><br> <p id="todoCount"></p> <ol id="todoList"></ol>
js操做邏輯
$(function(){ function count(){ var length=$("#todoList").children().length; $("#todoCount").html(length>0 ? "現有"+length+"項todoList!" : ""); } $("#todoForm").submit(function(e){ e.preventDefault(); //阻止頁面自動提交表單 var input=$("#todoInput").val(); $("#todoList").append("<li>"+input+" <a class='toDelete' href='###'>delete</a></li>"); $("#todoInput").val('') count(); }); //對象上綁定click事件 $("#todoList").on('click','.toDelete',function(){ $(this).parent().remove();//經常使用的刪除目標節點的方法 count(); }); });
效果圖: