1. 程式人生 > >JQuery中的DOM操作

JQuery中的DOM操作

return 不同 函數塊 傳遞 區別 圖片 spa 獲取表單對象 遍歷節點

什麽是DOM?

要改變頁面的某個東西,JavaScript 就需要獲得對 HTML 文檔中所有元素進行訪問的入口。這個入口,連同對 HTML 元素進行添加、移動、改變或移除的方法和屬性,都是通過文檔對象模型來獲得的(DOM)。

在 1998 年,W3C 發布了第一版的 DOM 規範。這個規範允許訪問和操作 HTML 頁面中的每一個單獨的元素。

所有的瀏覽器都執行了這個標準,因此,DOM 的兼容性問題也幾乎難覓蹤影了。 DOM 可被 JavaScript 用來讀取、改變 HTML、XHTML 以及 XML 文檔

HTML-DOM

HTML-DOM 在使用JavaScript和DOM為HTML文件編寫腳本,有許多專屬於HTML-DOM的屬性. HTML-DOM的出現甚至比DOM Core還要早,它提供一些更簡明的符號來描述各種HTML元素的屬性。

例如: 使用HTML-DOM來獲取表單對象 的方法: document.forms

CSS-DOM

CSS-DOM是針對CSS的操作。在JavaScript中,CSS-DOM技術的主要作用是獲取和設置style對象的各種屬性。通過改變style對象的各種屬性,可以使網頁呈現出各種不同的效果

設置某個元素style對象字體顏色的方法: elements.style.color = “red”;

查找節點

元素可以通過text()方法讀取其中的html內容,相當於DOM的innerHTML屬性

技術分享圖片
$(function(){ 
var $para = $("p");         // 獲取<p>節點 
var $li = $("ul li:eq(1)");         // 獲取第二個<li>元素節點 
var p_txt = $para.attr("title");     // 輸出<p>元素節點屬性title 
var ul_txt = $li.attr("title");         // 獲取<ul>裏的第二個<li>元素節點的屬性title 
var li_txt = $li.text();         // 輸出第二個<li>元素節點的text 
}); 
技術分享圖片

插入節點

技術分享圖片

技術分享圖片

刪除節點:

需要註意的是,在刪除元素時,如果當前元素包括子元素,會一同刪除,並且在刪除元素時會返回一個當前被刪除元素的引用,可以在以後再使用這些元素。

技術分享圖片

$(function(){

var $li = $("ul li:eq(1)").remove(); // 獲取第二個<li>元素節點後,將它從網頁中刪除。

$li.appendTo(“ul”); // 把剛才刪除的又重新添加到<ul>元素裏

});

$(function(){

$("ul li").remove("li[title!=菠蘿]"); //把<li>元素中屬性title刪除不等於"菠蘿"的<li>元素刪除

});

技術分享圖片

清空元素:

清空了ul 中的第二個li中的所有後代節點。註意:empty和remove的區別,empty清空元素內的後代節點,元素本身保留。

$(function(){
     $("ul li:eq(1)").empty(); // 找到第二個<li>元素節點後,清空此元素裏的內容
  });

復制節點:

這個復制出來的新元素不具有任何的行為,也就是當點擊克隆出來的新元素的時沒有前面設置的點擊事件,如果需要可以在clone方法中傳遞一個參數clone(true),表示復制元素時同時復制元素中的所綁定的事件。

$(function(){ 
    $("ul li").click(function(){ 
        $(this).clone().appendTo("ul"); // 復制當前點擊的節點,並將它追加到<ul>元素 
    }) 
});  

替換節點:

$(function(){ 
    $("p").replaceWith("<strong>你最不喜歡的水果是?</strong>"); 
    // 同樣的實現: $("<strong>你最不喜歡的水果是?</strong>").replaceAll("p"); 
}); 

包裹節點 :wrap ,wrapAll ,wrapInner

$(function(){
    $(“span”).wrap(“<strong></strong>”);
})    
運行結果代碼:
<strong><span>選擇你最喜歡的水果</span></strong>
$("span").wrapAll("<strong></strong>");        //以第一個為開始往後面緊貼   這個會破壞頁面結構  
執行後結果
<strong>
    <span>選擇你最喜歡的水果</span>
    <span>選擇你最喜歡的水果</span>
</strong>
<span>選擇你最喜歡的水果</span>
$("span").wrapInner ("<strong></strong>");
執行後結果
<span><strong>選擇你最喜歡的水果</strong></span>

屬性操作

技術分享圖片
 //取值
var p_txt = $("p").attr(“title”);
//設置屬性
//找到a元素且有其中含有字符串“link”,修改屬性href為“index.html"
$(function(){
    $("a:contains(‘link‘)").attr("href",“index.html");        
})
//如果想同時設置多個屬性可以使用一下代碼
$("a:contains(‘link‘)").attr({"href":“index.html","title":"test"});    //鍵值對    attr({"屬性1":"值1","屬性2":"值2","屬性3":"值3"})

//刪除屬性

$(“a”).removeAttr(“title”);

註意:jQuery中有很多函數同時實現取值get,和設置set,包括html(),text(),height(),width(), val(),css()等.

 
技術分享圖片

樣式操作

//讀取和設置樣式    使用屬性方式 讀取樣式    
var p_class = $(“p”).attr(“class”);
 //設置樣式
$(“p”).attr(“class”,”high”);
註意:使用屬性方式設置樣式會替換掉原有的樣式,如果想實現追加效果可以使用addClass

追加樣式:

技術分享圖片
樣式:
<style type="text/css">
    .high    {font-weight:bold;    color:red; }
    .another{font-style:italic; color:blue;}
</style>
html:
<p title="選擇你最喜歡的水果" class="high">選擇你最喜歡的水果</p>      //class="height another"  樣式也可以這樣寫,中間用空格隔開
jQuery:
$(“p”).addClass(“another”);

註意:樣式設置遵循兩條規則 如果個一個元素添加了多個class值時,就相當於合並它們的樣式。 如果不同的class設置了同一樣式屬性,則後者覆蓋前者。

技術分享圖片

移除樣式

 //移除樣式
    $(“p”).removeClass(“high”);
 //同時移除多個樣式
    $(“p”).removeClass(“high”).removeClass(“another”);
//樣式全部移除
    $(“p”).removeClass();

Toggle

toggle事件控制樣式設置和取消,第一次點擊時執行toggle事件定義中的第一個函數塊,當第二次點擊時運行toggle事件定義中的第二個函數塊,以此類推。

技術分享圖片
$(function(){
    $(“p”).toggle(function(){        //內置方法一 添加樣式
        $(this).addClass(“another”);            
    },function(){                //內置方法二 刪除樣式            
$(this).removeClass(“another”); }) }) //會一直循環
技術分享圖片

toggleClass 方法有類似的功能

當超鏈接點擊時執行代碼設置樣式,這時設置樣式時會自動判斷,如果當前樣式不在對應元素上則添加樣式,如果在當前元素上則刪除樣式。

$(function(){
    $(“#link”).click(function(){
        $(“p”).toggleClass(“another”);            
        return false;
    })        
}) 

設置和獲取 括號裏面沒有就是取,有就是設置

技術分享圖片
--HTML文本值 
//取值 var p_html = $(“p”).html(); //設置 $(“p”).html(“<strong>選擇你最喜歡的水果</strong>”);
--text()方法 文本
//取值
  var p_text = $(“p”).text();
//設置值
   $(“p”).text(“選擇你最喜歡的水果”);
--val()方法 value

//取值
  var txt_value = $(this).val();
//設置值
  $(this).val("");
技術分享圖片

遍歷節點

技術分享圖片

CSS-DOM
技術分享圖片

  //取值
    $(“p”).css(color);
  //設置值
    $(“p”).css(“color”,”red”);
  //和attr一樣可以一次設置多個樣式
    $(“p”).css({“color”:”red”,”background”:”#003333”});
  //透明度設置
    $(“p”).css(“opacity”,”0.5”);

JQuery中的DOM操作