1. 程式人生 > >HTML-使用jQuery操作 DOM

HTML-使用jQuery操作 DOM

DOM操作分為三類:

  1. DOM Core:任何一種支援DOM的程式語言都可以使用它,如getElementById()
  2. HTML-DOM:用於處理HTML文件,如document.forms
  3. CSS-DOM:用於操作CSS,如element.style.color="green"

注:JavaScript用於對(x)html文件進行操作,它對這三類DOM操作都提供了支援

jQuery對JavaScript中的DOM操作進行了封裝:

jQuery中的DOM操作:

1. 樣式操作

①使用css()為指定的元素設定樣式值或獲取樣式值

語法:

css(name,value) ;    【設定單個屬性】

css({name:value, name:value,name:value…}) ;    【同時設定多個屬性】

示例:

$(this).css("border","5px solid #f5f5f5");

$(this).css({"border":"5px solid #f5f5f5","opacity":"0.5"});  【opacity:設定透明度】

②追加樣式

語法:

$(selector).addClass(class);

$(selector).addClass(class1 class2 … classN);

示例:

.text{ padding:10px;}

.content {background-color:#FFFF00; }

.border {border:1px dashed #333; }

$("h2").mouseover(function() {   $("p").addClass("content border");    });

【使用addClass為P新增content和border】

③移除樣式

語法:

$(selector).removeClass("class") ;

$(selector).removeClass("class1 class2 … classN ") ;

示例:

$("h2").mouseout(function() {    $("p").removeClass("text content");   });

【使用removeClass為P移除content和text】

④切換樣式

toggleClass():模擬了addClass()與removeClass()實現樣式切換的過程

語法:

$(selector).toggleClass(class) ;

示例:

$("h2").click(function() {   $("p").toggleClass("content  border");   });

⑤判斷是否含指定的樣式

hasClass( )方法來判斷是否包含指定的樣式

語法:

$(selector). hasClass(class);

示例:

$("h2").mouseover(function() {

      if(!$("p").hasClass("content ")){ $("p").addClass("content ");    }    });

        【滑鼠移入,判斷p元素是否含有content,不含有就新增content】

$("h2").mouseout(function() {

      if($("p").hasClass("content ")) {       $("p").removeClass("content ");    }    });

        【滑鼠移出,判斷p元素是否含有content,含有就移除content】

2. 內容及Value值操作

①HTML程式碼操作

html()可以對HTML程式碼進行操作,類似於JS中的innerHTML

語法:

$("div.left").html();   【獲取元素中的html程式碼】

$("div.left").html("<div class='content'>…</div>");   【設定元素中的html程式碼】

示例:

$("div.left").html("");

【清空需要新增引號,如果html方法括號中不新增任何內容,是獲取html程式碼】

②標籤內容操作

text()可以獲取或設定元素的文字內容

語法:

$("div.left").text();  【獲取元素中的文字內容】

$("div.left").text("<div class='content'>…</div>");   【設定元素中的文字內容】

示例:

$("div.left"). text ("");

【清空需要新增引號,如果text方法括號中不新增任何內容,是獲取文字內容】

注:html( ) 和text( )方法的區別:

③屬性值操作

val()可以獲取或設定元素的value屬性值

語法:

$(this).val();   【獲取元素的value屬性值】

$(this).val(value);   【設定元素的value屬性值】

$( this). val ("");

【清空需要新增引號,如果val方法括號中不新增任何內容,是獲取val值】

$(#search). focus ( );

【獲得焦點的事件】

$(#search). blur ( );

【失去焦點的事件】

3. 節點操作

①查詢節點(前面章節已講)

使用選擇器來查詢節點

②建立節點元素

工廠函式$()用於獲取或建立節點:

  1. $(selector):通過選擇器獲取節點
  2. $(element):把DOM節點轉化成jQuery節點
  3. $(html):使用HTML字串建立jQuery節點

例如:

var $newNode=$("<li></li>");

var $newNode1=$("<li>你喜歡哪些冬季運動專案?</li>");

var $newNode2=$("<li title='last'>北京申辦冬奧會是再合適不過了!</li>");

                 【建立含文字與屬性<li>元素節點】

③元素內部插入子節點

④元素外部插入同輩節點

⑤刪除節點

jQuery提供了三種刪除節點的方法:

a. remove( ):刪除整個節點:$(selector).remove([expr]);

【remove( )刪除之後不保留原有位置】

b. empty( ):清空節點內容:$(selector).empty( );

【empty( )只刪除內容,但是保留原有位置】

c. detach():刪除整個節點,保留元素的繫結事件、附加的資料節點屬性操作

⑥替換節點

replaceWith( )和replaceAll( )用於替換某個節點:

示例:

var $newNode1=$("<li>你喜歡哪些冬季運動專案?</li>");

$(".gameList li:eq(2)").replaceWith($newNode1);

$($newNode1).replaceAll(".gameList li:eq(2)");

replaceWith( )和replaceAll( )兩者的關係類似於append( )和appendTo( )

⑦複製節點

clone()用於複製某個節點:

語法:

$(selector).clone([includeEvents]) ;

includeEvents:引數ture或flase, true複製事件處理,flase時只能複製節點不能複製事件處理

示例:

$(".gameList li:eq(1)").click(function(){   $(this).clone(true).appendTo(".gameList");   })

【複製了第2個li並且複製了事件處理】

$(".gameList li:eq(2)").click(function(){   $(this).clone(false).appendTo(".gameList");   })

【複製了第3個li但是沒有複製事件處理】

4. 屬性操作

①獲取與設定元素屬性

attr()用來獲取與設定元素屬性

語法:

$(selector).attr([name]) ;   【獲取屬性值】

$(selector).attr({[name1:value1]…[nameN:valueN]}) ;    【設定多個屬性的值】

示例:

$(".contain img").attr({width:"200",height:"80"});   【使用attr方法設定了多個屬性的值】

②刪除元素屬性

removeAttr()用來刪除元素的屬性

語法:

$(selector).removeAttr(name) ;

示例:

$(".contain img").removeAttr("alt");   【刪除元素的alt屬性】

5. 節點遍歷

①遍歷子元素

children( )方法可以用來獲取元素的所有子元素

語法:

$(selector).children([expr]);

示例:

var $section =$("section").children(); 

【獲取<section>的子元素,但不包含子元素的子元素】

alert($section.length);

②遍歷同輩元素

jQuery可以獲取緊鄰其後、緊鄰其前和位於該元素前與後的所有同輩元素

示例:

$("li:eq(1)"). next ().addClass("orange");  【遍歷獲得同輩節點】

$("li:eq(1)"). prev ().addClass("orange");

$("li:eq(1)"). slibings ().addClass("orange");

③遍歷前輩元素

jQuery中可以遍歷前輩元素

parent():獲取元素的父級元素

parents():元素元素的祖先元素

示例:

$("li:eq(1)").parent().addClass("orange");   【獲取前輩節點】

$("li:eq(1)").parents().addClass("orange");

④其他遍歷方法

a. each( ) :規定為每個匹配元素規定執行的函式

語法:

$(selector).each(function(index,element)) ;

Index:選擇器的位置

Element:當前的元素

示例:

$("img").click(function(){    【給圖片新增點選事件】

       $("li").each(function(){   【遍歷每一個li元素】

           var str=$(this).text()+"<br>";   【獲取當前li元素中的內容】

           $("section").append(str);   【把內容追加到section後面】   })   });

b. end( ):結束當前鏈條中的最近的篩選操作,並將匹配元素集還原為之前的狀態

示例:

$(".contain :header").css({"background":"#2a65ba","color":"#ffffff"});

$(".gameList li").first().css("background","#b8e7f9").end().last().css ("background","#d3f4b5");   【使用鏈式操作,檢索第一個元素,並且把顏色設定成藍色;end()方法將物件還原為呼叫first()之前的狀態,之後的last()方法呼叫的是.gameList li中的元素,而不是呼叫了first()之後的元素】

$(".gameList li:last").css("border","none");

6. CSS-DOM操作

除css()外,還有獲取和設定元素高度、寬度等的樣式操作方法

語法

功能

css()

設定或返回匹配元素的樣式屬性

height([value])

設定或返回匹配元素的高度

width([value])

設定或返回匹配元素的寬度

offset([value])

返回以畫素為單位的topleft座標。僅對可見元素有效

offsetParent( )

返回最近的已定位祖先元素。定位元素指的是元素的CSS position值被設定為relativeabsolutefixed的元素

position( )

返回第一個匹配元素相對於父元素的位置

scrollLeft([position])

引數可選。設定或返回匹配元素相對滾動條左側的偏移

scrollTop([position])

引數可選。設定或返回匹配元素相對滾動條頂