jQuery基礎與一些細節(1)

1.jQuery的簡介 : )

jQuery是什麼?

一個優秀的JS庫,大型開發必備。官方的宣傳爲Write less,do more(寫的更少,做的更多)。

 

jQuery的三大好處:

1.     簡化Javascript的複雜操作

2.     不需要再關心瀏覽器兼容性

3.     提供了大量實用簡便的方法

 

現在的jQuery有1.x和2.x兩大版本,最主要的區別在於2.x版本不再提供對IE6,7,8的兼容,1.x則還是會對原來的老版本瀏覽器進行兼容。如果我們的項目主要運用於移動端的話,則可以選擇使用2.x版本,2.x版本的jQuery代碼也更爲簡潔,如果需要考慮兼容IE6等老版本的瀏覽器,則還是選擇1.x的jQuery。

 

如何學習jQuery?

總的來說,jQuery只是一個輔助工具,就像做飯一樣,就算給你準備好了成百上千的材料,你也不一定能做出一道很美味的晚餐。真正能實現我們想要的效果的東西,其實是我們自己的一個操作過程,也就是我們的邏輯思維和我們掌握的細節知識,所以最後還是得通過我們自身的能力來操作,工具始終只能是工具而已。另外,jQuery很龐大,想要獲得提高,必須分階段的來學習,不可能一口氣就掌握。

 

2.選擇元素:

全球100萬個網站當中有50%的網站都在使用着jQuery,這歸結於jQuery在選擇網頁元素的操作上爲開發者們提供了很大的方便,除此之外,jQuery的寫法也極爲簡潔,如鏈式操作,取值與賦值合體,方法函數化等。但是,jQuery始終只是Javascript下的一個子集,它們可以出現在同一個項目中,但是不能混用,這就像男廁和女廁,雖然可以放在一起來使用,但終究男性只能使用男廁,女性只能使用女廁一個道理。下面就通過一些具體的例子來看看jQuery的一些基本操作,這裏我們選擇使用的jQuery爲1.10.1。

 

Case01 jQuery中ID選擇器,類選擇器,標籤選擇器的使用:

        <div id="d1" class="box">

             div

       </div>

        <script>

        //模擬CSS選擇元素

        $('#d1').css('background','red');

        //根據標籤選擇

        $('div').css('background','blue');

        //根據類選擇

        $('.box').css('background','yellow');

</script>

 

如果我們此時再向頁面中添加一個類名爲box的span標籤:

<div id="d1" class="box">

 div

 </div>

  <span class="box">span</span>

這時再使用jQuery類選擇器代碼:

  $(‘.box’).css(‘background’,’yellow’);進行背景色變化時,會發現span標籤的背景色也會和div標籤的背景色一樣變爲黃色。雖然這只是一個顯而易見,可想而知的改變,但這就是jQuery與原生的Javascript的一個基本區別——省略了循環。在原生Javascript中,要想讓選擇到的一組元素都去進行操作,必須要加入一個循環,而在jQuery中,選擇到了一組元素,我們可以直接對這一組元素進行後續操作,而不用進行繁瑣的循環。

 

Case02  jQuery中獨有表達式的選擇操作:

<ul>

   <li></li>

   <li></li>

   <li></li>

   <li></li>

   <li></li>

</ul>

<script>

  //讓所有li標籤的背景色變紅

 $('li').css('background','red');

 //讓第一個li標籤的背景色變紅

 $('li:first').css('background','red');

 //讓最後一個li標籤的背景色變紅

 $('li:last').css('background','red');

 //讓中間的某個li標籤的背景色變紅,eq()當中的數字爲li標籤的索引值,和數組一樣,也是從0開始

 $('li:eq(2)').css('background','red');

 //li標籤進行隔行換色(奇數行用even表示)

 $('li:even').css('background','red');

 //li標籤進行隔行換色(偶數行用odd表示)

 $('li:odd').css('background','red');

</script>

 

除了這些選擇方式外,jQuery還有很多其他獨有的選擇方式,比如爲上述的li標籤中的某兩個添加一個box的類,這時我們可以通過$(‘li.box’)或者$(‘li’).filter(‘.box’)來選擇我們想要的元素:

<ul>

   <li></li>

   <li></li>

   <li class="box"></li>

   <li class="box"></li>

   <li></li>

</ul>

<script>

   $('li.box').css('background','red');

   $('li').filter('.box').css('background','red');

</script>

 

這時,我們再爲上述的li標籤中的某兩個li標籤加上一個title屬性,這時我們又可以通過以下的方式來選擇到對應的元素:

<ul>

   <li></li>

   <li title="jquery"></li>

   <li class="box"></li>

   <li class="box"></li>

   <li title="jquery"></li>

</ul>

 <script>

 $('li').filter('[title=jquery]').css('background','red');

  </script>

 

3.jQuery的寫法:

jQuery與Javascript的寫法,我們只需要注意一點,jQuery中的所有操作都已經函數化了。

舉個例子,在原生的Javascript中我們想讓頁面在加載完畢後做一些事情,使用的是:

window.onload = function(){  //你想要做的事情 };

如果用jQuery來寫,就是這樣的:

$()  //很簡單吧,這相當於定義了一個名爲$的函數

$(function(){  //你想要做的事情 });

再比如,Javascript中的innerHTML,到jQuery中變成了html(),Javascript中的onclick=function(){},到jQuery中變成了click(function(){});。所以,原生的Javascript都可以轉化爲jQuery的寫法,這就是典型的jQuery式的方法函數化。接下來我們可以寫一個小效果:

   先定義一個id爲d1的div標籤,裏面的內容爲”Hello,jQuery”,在點擊這個盒子時我們需要彈出這一段內容。

我們先用Javascript的寫法來看一下:
<div id="d1">

 Hello,jQuery!

</div>

<script>

 window.onload = function(){

      var oDiv = document.getElementById('d1');

      oDiv.onclick=function(){

          alert(this.innerHTML); 

      };

 };

</script>

我們現在再用jQuery來寫一下看看:

<div id="d1">

 Hello,jQuery!

</div>

<script>

    $(function(){

     $('#d1').click(function(){

          alert($(this).html());

     });

    });

</script>

我們可以發現一些小問題,jQuery當中基本可以把“=”忽略掉,操作都是通過傳參來完成。調用jQuery的時候一定要帶上括號,因爲方法函數化是jQuery的基本寫法。另外再來說下什麼是鏈式操作吧,這很簡單,但卻也是jQuery那麼受歡迎的一個重要原因。下面是一個鏈式操作的例子:

<div id="d1">

 Hello,jQuery!

</div>

<script>

$(function(){

   var oDiv= $('#d1');

  oDiv.html('hello');

  oDiv.css('background','red');

  oDiv.click(function(){     

       alert(123);

  });

  });

</script>

上面的操作,我們可以寫成:

$('#d1').html('hello').css('background','red').click(function(){

       alert(123);

});

但是,如果我們對鏈式操作不是很熟練的話,我們還是分開來寫,這樣代碼也易於閱讀和修改。

在jQuery中,還有一個很重要的東西,那就是取值與賦值的合體這樣一個思想。

在原生的Javascript中,爲元素賦值取值是這樣來做的:

window.onload = function(){

    oDiv.innerHTML = ‘jQuery’;//賦值

    alert(oDiv.innerHTML);  //取值

};

在jQuery中,是這樣來做:

$(function(){

  $(‘#d1’).html(‘jQuery’);//賦值

  alert($(‘#d1’).html());//取值

});

可以看出,jQuery中的html()方法同時承擔了取值和賦值,這就是取值和賦值合體的特徵表現。講到這裏,有一個很重要的細節不得不說,那就是在針對一組,而不是一個元素進行賦值取值時,jQuery又是怎麼來做的呢,下面我們還是通過一個例子來說明一下:

   我們定義了一組li元素,現在要做的就是使用jQuery選擇li元素,然後來彈出li下面的內容:

  <ul>

    <li>aaa</li>

    <li>bbb</li>

    <li>ccc</li>

    <li>ddd</li>

    <li>eee</li>

  </ul>

  <script>

  $(function(){

    alert($('li').html());

  });

   </script>

   彈出的結果可以看出,jQuery只是取到了這組li元素中的第一個li標籤中的內容,不會取出所有li元素中的內容。如果想要取出所有li元素中的內容,我們必須通過循環才能做到。

由此可以得出一個類似於結論的東西:

   當選取到的是一組元素時,對其進行取值時,取到的只是這組元素中的第一個元素的值。相反,如果進行的是賦值操作,則會對取到的所有元素都進行賦值而不用通過循環。下面的操作可以證明這一點:

<ul>

    <li>aaa</li>

    <li>bbb</li>

    <li>ccc</li>

    <li>ddd</li>

    <li>eee</li>

  </ul>

  <script>

  $(function(){

    alert($('li').html(‘jQuery’));

  });

   </script>

上面的這個賦值與取值的細節是很正確的,很符合生活中的思路。取值只取相同的一組元素中的一個,而賦值則爲這一組元素都賦值。

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