文章出處

前面的話

  如果要比喻jQuery和原生javascript的關系,我個人認為是自動檔和手動檔汽車的區別。使用原生javascript,可以知道離合器以及檔位的作用;而使用jQuery,則把離合器和手動檔位封裝到函數,直接前進、后退或駐車即可。所以,熟練使用原生javascript,再去使用jQuery是一個很自然的步驟。從本文開始,將陸續介紹jQuery的相關內容,并給出相關的原生javascript實現。接下來,將詳細介紹jQuery對象$

 

$對象

  說起jQuery,最明顯的標志,毫無疑問,就是美元符號$,美元符號$其實是jquery的簡寫。而使用$()包裝的對象就是jQuery對象

  與jQuery對象相對應的就是DOM對象,DOM對象其實就是DOM元素節點對象

  如果直接寫document,則指的是document的DOM元素對象

document.onclick = function(){
    alert('dom');
}

  而如果用$()包括起來,如$(document),是jQuery(document)的簡寫形式,則指的是jQuery對象

<script src="jquery-3.1.0.js"></script>    
<script>
    console.log(jQuery(document));//[document]
    console.log($(document));//[document]
    console.log(document);//#document
</script>

  [注意]jQuery對象無法使用DOM對象的方法,DOM對象也無法使用jQuery對象的方法

<script src="jquery-3.1.0.js"></script>    
<script>
    //無反應
    $(document).onclick = function(){
        alert(0);
    };
    //Uncaught TypeError: document.click is not a function
    document.click(function(){
        alert(1);
    });
</script>

 

轉換

【1】DOM轉jQuery對象

  對于一個jQuery對象,只需要用$()把DOM對象包裝起來,就可以獲得一個jQuery對象

【2】jQuery轉DOM對象

  jQuery是一個類數組對象,可以通過[index]或get(index)的方法得到相應的DOM對象

console.log(document === $(document)[0]);//true
console.log(document === $(document).get(0));//true

 

共存

  如果jQuery對象和DOM對象指向同一對象,綁定不同函數,則函數會按照順序依次執行

//先彈出0,再彈出1
document.onclick = function(){
    alert(0);
}
$(document).click(function(){
    alert(1);
});

 

不報錯

  如果使用DOM對象,為不存在的DOM對象設置樣式會報錯

//Uncaught TypeError: Cannot read property 'style' of null
document.getElementById('test').style.color = 'red';

  而使用jQuery對象,為不存在的jQuery對象設置樣式不會報錯

$('#test').css('color','red');

 

判斷存在

  一般地,DOM對象在使用之前需要判斷存在,防止出錯

if(document.getElementById('#test')){
    document.getElementById('#test').style.color = 'red';
}

  對于jQuery對象來說,因為$()獲取到的永遠是對象,即使網頁上沒有該元素。所以不能采用下面方式判斷

if($(#test)){
    //
}

  應該根據獲取到元素的長度來判斷

if($(#test).length){
    //
}

  或者轉換成DOM對象來判斷

if($(#test)[0]){
    //
}

 

最后

  最后要提一下jQuery的版本問題。jQuery從2.0版本開始不再支持IE8-瀏覽器,且去掉了一些過時的API,從而使體積更小,運行速率更高。所以,如果有兼容IE8-瀏覽器的需求,需要使用jQuery1.*版本


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()