jQuery學習筆錄3(jQuery學習筆記——DOM【1.DOM Core】)

DOM是Document Object Model的縮寫,是文本對象模型的意思。

一 概述

1 DOM 能夠讓開發者獲取和操作網頁中的數據,腳本和表現層對象。

dom結構,樹形的 ,如下圖



   DOM操作分3個方面:DOM Core, HTML- DOM , CSS- DOM

jQuery中DOM Core的操作
1查找元素節點
1)查找元素節點

var $li=$("ul li:eq(0)");//查找元素節點,獲取<ul>裏第1個<li>節點

2)查找屬性節點

使用attr()方法來獲取它的各種屬性

var $para=$("p");
var p_txt=$para.attr("title");

3)動態添加元素節點

i 創建新的元素

ii 將新的元素插入到文檔中,將新的元素插入到文檔最簡單的方法是,讓其作爲文檔中某個節點的子節點

$("HTML標記字符串"):創建一個DOM對象,並將這個DOM對象包裝成一個jQuery對象後返回。

$("HTML標記字符串").append("新建元素")

$("ul").append($li_1)

除了append()之外,還有別的方法可以將新的節點插入到文檔中,

比如 appendTo(),before()。

4)刪除元素節點

remove() 和 empty()

remove()刪掉元素節點 以及他下面的所有子節點都一併刪掉

$("ul li:eq(3)").remove()

empty() 清空節點,及元素中所有的後代節點。

5)複製節點

clone(),如果想讓複製後的節點同樣擁有複製功能,這樣寫:clone(true)

6)替換節點

replaceWith(), replaceAll()

7)包裹節點

wrap(),wrapAll(),wrapInner()

 $("strong").wrap("<em></em>")//用<em>標籤把strong括起來

firebug中看到的:

<em>
<strong>你最愛的水果呢?</strong>
</em>

2獲取屬性和設置屬性

1)如果要獲取p元素的屬性,只要給attr()傳遞一個參數(屬性名稱)。

  var $para=$("p")//獲取p元素
  var $p_tit=$para.attr("title")//獲取<p>元素節點屬性title

2)設置屬性,傳遞2個參數:1個屬性名稱 ,1個屬性的值

 $("ul li[title=香蕉]").attr("title","your turn");//設置屬性值

類似獲取屬性,設置元素屬性值的方法:html(),text(),val(),css()等。

3)刪除屬性

removeAttr()

3樣式操作

1)用樣式A替換樣式B

$("p").attr("class","A") //class="A"

2)添加樣式 addClass("C")

$("p").addClass("testColor");

3)刪除樣式 removeClass("A")

$("p").removeClass("testColor").removeClass("myClass");

4設置和獲取html、文本和值

$("p").html();

相當於js 的innerHTML(),抓取元素中【HTML內容】:文本內容 + p元素內的標籤 html

$("p").text();

相當於js的innerText() ,讀取或設置元素的【文本內容】

$(this).val();

類似js的value屬性,設置和抓取元素的【值】,無論是textbox 還是select ,如果元素爲多選,則返回一個包含選擇值的數組

5)獲取焦點

$("#mailaddress").focus()

6)失去焦點

$("#mailaddress").blur()

4遍歷節點,遍歷節點方法有很多:parent(),parents(),next(),children,prev(),siblings()等——詳見jQuery API

1) parent():獲取匹配元素的父元素,包含父元素裏面的內容

<div><p>Hello</p><p>Hello</p></div>
$("p").parent() 得到的是:<div><p>Hello</p><p>Hello</p></div>對象,因爲p標籤的父標籤是div.

又例:

alert("parent")
var li3=$("li").parent();//匹配元素的父元素
alert(li3.html());

2 )chlidren():只抓該元素下一級的元素

<p>一個段落<strong>haha<em>dd</em></strong></p>

var v_p=$("p").children();

alert(v_p.length);得到的是:1個元素,就是<strong>,<em>不考慮

3 )next() :抓匹配元素後面緊鄰的同輩元素

var p1=$("p").next(); 結果是<ul>

4)prev() : 抓匹配元素前面緊鄰的同輩元素

var ul1=$("ul").prev(); 結果是<p> 

5 )siblings() :抓取匹配元素前後所有的同輩元素

var p=$("p").siblings();
alert(p.html());

6 )closest() : 用來獲得最近的匹配元素,檢查當前元素是否匹配,匹配直接返回元素本身,不匹配向上查找父元素,直到有匹配的,沒有就返回空jquery對象
$(window.document).bind("click",function(e){
    $(e.target).closest("li").css("color","red");

  $(e.target).closest("li").css({"fontSize":"18px","backgroundColor":"#888888"});
}) 點到<li> ,添加css樣式

具體代碼1:查找節點

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="jQueryDomAttr.aspx.cs" Inherits="jQueryDom_jQueryDom1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
    <script src="../jQuery_JQueryCore/script/jquery-1.3.2.min.js" type="text/javascript">
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <p title="選擇你最喜歡的水果">你最喜歡的水果是?</p>
    <ul>
        <li title ='蘋果'>蘋果</li>
        <li title='橘子'>橘子</li>
        <li title='菠蘿'>菠蘿</li>
    </ul>
    </div>
    </form>
</body>
</html>
<script language="javascript">
    var $li=$("ul li:eq(0)");//查找元素節點,獲取<ul>裏第1個<li>節點
    var li_txt=$li.text();
alert(li_txt);
    var $para=$("p"); 
    var p_txt=$para.attr("title"); //查找屬性節點
alert(p_txt);
    var $li_1=$("<li>西紅柿</li>");//動態添加元素節點,元素要閉合
    var $li_2=$("<li title='香蕉'>香蕉</li>")
    $("ul").append($li_1);
    $("ul").append($li_2);//相當於 $("ul").append($li_1).append($li_2)
alert("添加好了")
    $("ul li:eq(3)").remove();//獲取第4個<li>元素節點,從網頁中刪掉
alert("刪除第4個")
    var $li=$("ul li:eq(1)").remove();//第2個元素刪掉
alert("第2個刪掉 ok-》再添加上")
    $li.appendTo("ul")//再把剛剛刪掉的元素添加到<ul>元素
alert("刪掉 屬性title=菠蘿的")
    var $liPropery=$("ul li").remove("li[title=菠蘿]");

    $liBase=$("ul li:eq(1)");
    $litest=$("<li title=test>Test</li>")
    $litest.insertAfter($liBase);
alert("將蘋果移動到第二位置上")
    $li_one=$("ul li[title=蘋果]");
    $li_two=$("ul li:eq(1)");
    $li_two.insertBefore($li_one);

alert("empty用法:清空test");
    $("ul li[title=test]").empty();
alert("複製蘋果節點");
    $("ul li[title=蘋果]").clone().appendTo("ul");
alert("點擊蘋果,複製蘋果節點")  ; 
    $("ul li").click(function(){
        $(this).clone().appendTo("ul")
    });
alert("點擊蘋果,複製蘋果節點,並且複製後的蘋果也具有可複製功能")     
    $("ul li").click(function(){
        $(this).clone(true).appendTo("body")
    });
alert("替換節點");
    $("p").replaceWith("<strong>你最愛的水果呢?</strong>");
    $("strong").wrap("<em></em>");//用<em>標籤把strong括起來
alert("獲取屬性");
    var $para=$("p");//獲取p元素
    var $p_title=$para.attr("title");//獲取<p>元素節點屬性title
    alert("p元素的title:"+$p_title);
    $("ul li[title=香蕉]").attr("title","your turn");//設置屬性值
    $("ul li[title=your turn]").attr({"id":"li_Tests","name":"li_Test"});//設置多個屬性值
alert("刪除屬性")
    $("ul li[title=your turn]").removeAttr("id")//刪除ul li title是香蕉的 ID屬性
</script>


具體代碼2:屬性樣式操作

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="jQueryDOMCss.aspx.cs" Inherits="jQueryDom_jQueryDOMCss" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
    <script src="../scriptJquery/jquery-1.3.2.min.js"></script>
    <style>
    .myClass{
        color:green;
        font-size:14px;
        
    }
    .pNew{
        background-color:pink;
        color:red;
    }
    .testColor{
        color:white;
    }
    #mailaddress{
        text-shadow:white;
    }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <p class="myClass" title="選擇你喜歡的水果"><em>你喜歡啥水果</em></p>
    <button type="button"  id="changCss" name="changCss">切換樣式</button><br />
    <input type="text" id="mailaddress" value="請輸入郵箱地址" />
    <input type="text" id="pwd" value="請輸入密碼" />
    <input type="button" value="登錄" />
    </div>
    </form>
</body>
</html>
<script>
$(p).css("color");//獲取<p>元素的樣式顏色
 var p_class=$("p").attr("class")//獲取p元素的class
$("p").attr("class","pNew");//將原來的myClass 替換成 pNew, <p class="myClass"   =>    <p class="pNew"
$("p").addClass("testColor");//在原來的基礎上添加 myClass樣式,合併樣式.後面的樣式覆蓋前面的樣式,color:yellow;如果合併的樣式是myClass 字體則爲red。
$("p").addClass("myClass");//樣式從上到下繼承:myClass->pNew->testColor
$("p").removeClass("testColor").removeClass("myClass");//$("p").removeClass() 當不帶參數的時候則是刪掉p元素的所有樣式
$("#changCss").click(function(){
    $("p").toggleClass("testColor")//因爲瀏覽器對button的type理解不一致,所以強制button type之前,FireFox認爲我的button是submit,樣式效果只在一瞬間

});
var $hasClasses=$("p").hasClass("pNew");//判斷有沒有pNew這個樣式,有返回true。等價於$("p").is(".pNew");
alert($hasClasses);

//設置和獲取html 、文本和值
//html():相當於js 的innerHTML(),抓取元素中【HTML內容】:文本內容 + p元素內的標籤 html
var $p_html=$("p").html();
alert($p_html);
$("p").html("<strong>這是嘛?</strong>")//替換掉水果句

//text():相當於js的innerText() ,讀取或設置元素的【文本內容】
var $p_text=$("p").text();
alert($p_text);
$("p").text("<h1>小糊塗神</h1>")//page show:<h1>小糊塗神</h1>

//val():類似js的value屬性,設置和抓取元素的【值】,無論是textbox 還是select ,如果元素爲多選,則返回一個包含選擇值的數組
$("#mailaddress").focus(function(){//focus 得到焦點
    //$(this).val("")  //就鎖定焦點清空了。
    var t_address=$(this).val();
    if(t_address == "請輸入郵箱地址")
    {
        $(this).val("");
    }

})

$("#mailaddress").blur(function(){//失去焦點
    var t_address=$(this).val()
    if(t_address == "")
    {
        $(this).val("請輸入郵箱地址")
    }
})

</script>


具體代碼3:children遍歷

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="jQueryDOMchild.aspx.cs" Inherits="jQueryDom_jQueryDOMchild" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
    <script src="../scriptJquery/jquery-1.3.2.min.js"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <p>一個段落<strong>haha<em>dd</em></strong></p>
    <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    </ul>
    </div>
    </form>
</body>
</html>
<script>
//遍歷節點:parent(),find(),filter()等
//chikdren()只抓該標籤下一級的元素<em>不考慮
var v_body=$("body").children();
var v_p=$("p").children();
//alert(v_p.html)
var v_ul=$("ul").children();
//alert(v_body.length);//2個元素
//alert(v_p.length);//1個元素
//alert(v_ul.length);//3個元素
for(var i=0;i<v_ul.length;i++)
{
    //alert(v_ul.eq(i).html())//v_ul[i].innerHTML
}
//next() 抓匹配元素後面緊鄰的同輩元素
var p1=$("p").next(); //<ul>
//prev() 抓匹配元素前面緊鄰的同輩元素
var ul1=$("ul").prev();//<p>
//siblings() 抓取匹配元素前後所有的同輩元素
var p=$("p").siblings();
alert(p.html());
//closest() 用來獲得最近的匹配元素,檢查當前元素是否匹配,匹配直接返回元素本身,不匹配向上查找父元素,直到有匹配的,沒有就返回空jquery對象
//
$(window.document).bind("click",function(e){
    $(e.target).closest("li").css("color","red");

  $(e.target).closest("li").css({"fontSize":"18px","backgroundColor":"#888888"});
})
//alert("parent")
var li3=$("li").parent();//匹配元素的父元素
//alert(li3.html());
</script>

具體代碼4 :eg

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="jQueryDOMeg.aspx.cs" Inherits="jQueryDom_jQueryDOMeg" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
    <script src="../scriptJquery/jquery-1.3.2.min.js"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <select id="single">
    <option>選擇1號</option>
    <option>選擇2號</option>
    <option>選擇3號</option>
    </select><br /><br />
    <select id="multiple" multiple="multiple" style="height:100px">
    <option selected ="selected">選擇1號</option>
    <option>選擇2號</option>
    <option>選擇3號</option>
    <option>選擇4號</option>
    <option selected="selected">選擇5號</option>
    </select><br />
    <input type="checkbox" value="check1" />多選1
    <input type="checkbox" value="check2" />多選2
    <input type="checkbox" value="check3" />多選3
    <input type="checkbox" value="check4" />多選4<br />
    <input type="radio" value="radio1" name="radio1" />單選1
    <input type="radio" value="radio2" name="radio1" />單選2
    <input type="radio" value="radio3" name="radio1" />單選3<br />
    </div>
    </form>
</body>
</html>
<script>
$("#single").val("選擇1號");
$("#single").val("選擇2號");//val()從上往下讀的
$("#multiple").val(["選擇2號","選擇3號"]);
$("#single option:eq(2)").attr("selected",true);
$("[value=radio2]:radio").attr("checked",true);
$("[type=checkbox]").val(["check2","check3"]);//$(":checkbox").val(["check2","check3"])//給checkbox賦值,選中

</script>


 







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章