a毛 jquery 學習記 3 常規選擇器(1)

jquery 學習三

參考資料:李炎恢老師的視頻  

        jQuery 最核心的組成部分就是:選擇器引擎。它繼承了 CSS 的語法,可以對 DOM 元素的標籤名、屬性名、狀態等進行快速準確的選擇,並且不必擔心瀏覽器的兼容性。jQuery選擇器實現了 CSS1~CSS3 的大部分規則之外,還實現了一些自定義的選擇器,用於各種特殊狀態的選擇。

    這裏注意,它繼承了css的語法,所以也可以說,在學習jquery的同時,我們也是在學些一些基礎的CSS

    在開始前,先把2文件夾中的除了base.js和tool.js都複製到新建的3的文件夾中;

    我們來做一些簡單的修改;dom.js頁面清空,index.html頁面如下

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8">
  <title>jquery 常規選擇器</title>

	<script type="text/javascript" src="jquery-1.12.2.js"></script>
    <script type="text/javascript" src="dom.js"></script>
 </head>
 <body>
	  <div id = "box">常規選擇器</div>
 </body>
</html>

 在做練習的時候我們先運行一下.css規則對比一下,然後運行jquery規則這樣通過比較的方式來學習


    1、簡單選擇器

    首先建一個style.css的文件,然後在頁面中加入以下代碼引入style.css樣式文件

   注意:引入文件的時候一定要寫到<head></head>頭之間  

<<link rel="stylesheet" href="style.css" type="text/css">
    然後在style.css頁面中輸入以下代碼,然後查看頁面效果    結果:頁面字體顏色變成紅色
 #box{
     color;red; //添加樣式
  }
    註釋以上代碼,在dom.js中輸模擬這個過程;輸入以代碼如下  結果:頁面字體顏色變成藍色
$(function(){
$('#box').css('color','bule');  //添加一個行爲,這個行爲是添加樣式
})
  我們先看一下下面這個選擇器表

     

     ID 選擇器只能獲取一個DOM對象而其它兩個則可以獲取多個DOM對象,我們接下來像來看一下元素跟class選擇器

   先在index.html中多複製兩行代碼

          <div > 常規選擇器 </div>
	  <div > 常規選擇器 </div>
	  <div >常規選擇器</div>

        回到style.css文件中輸入以下代碼(注意我們在輸入新的代碼的時候都把舊的代碼先註釋掉,以便我們能更好的看到我們所想要的效果)  查看頁面效果可以看到所有文件都變成棕色;
#div{
    color:maroon;
}
      回到dom.js中,我們來模擬它,輸入以下代碼 (注意:代碼執行前都把之前的代碼給注掉,下面在引不在綴述)
$(function(){
      $('div').css('color','red');
})
       查看效果跟我們所想的一樣,所有含在div標籤中的文件都變成了紅色;

         在看class標籤,回到style.css中,輸入以下代碼,查看效果(由於index.html頁面中沒有 class標籤,所以我們先給div前兩個增加class標籤,代碼如下)

index.html 

          <div class='pox'> 常規選擇器 </div>
	  <div class='pox'> 常規選擇器 </div>
	  <div >常規選擇器</div>
style.css
.pox{
    color:yellow;
}
查看效果得到:頁面中前兩行顏色變成了黃色;

回來dom.js中我們在來模擬它

$(function(){
      $('.pox').css('color','blue');
})
查看效果得到:頁面中前兩行顏色變成了黃色;

通過上面三種選擇器的學習我們可以知道  (該資料來源 w3cschool,摘錄+總結 ,鋒利的jquery)

   1、“#” 代表ID 也就是ID選擇器: 可以通過 "#+ID" 的方式來定位到具體的某個對象的屬性;

   2、div 也就是div 也就是元素名選擇器(標籤選擇器):以文檔元素作爲選擇符;

  3、‘.’也就是類屬性選擇器:只有適當地標記文檔後,才能使用這些選擇器;所以在使用類選擇這前,需要增加具體的文檔標記以便類選擇器正常工作,爲了將類選擇器的樣式與元素關聯,必須將 class 指定爲一個適當的值

        注意在此我們說一個問題:如果頁面上ID有多個,在js頁面中給其增加了樣式,最終效果只有一個有樣式;這是因爲ID 在上本來就是一個唯一標識,而在頁面上還寫了三個,這就肯定是頁面上出錯了;大家可以寫代碼看一下效果:

html代碼如下

   <div id = 'box'> 常規選擇器</div>
   <div id = 'box'> 常規選擇器</div>
   <div id = 'box'> 常規選擇器</div>
dom代碼如下
 $(function(){
    $('#box').css('color','red');
   });
   運行結果發現,只有第一行字體變了顏色

但是如果是在CSS 樣式中這樣做會是怎麼樣呢?

style.css代碼如下

#box{
	color:red;   //添加樣式
}
運行結果發現,字體全變了顏色,問題出現在哪裏呢,CSS的錯嗎?

答案是否定的,這也就是我們剛纔說的問題,由於開發者同一個頁面引用了多個ID造成的;所以ID,唯一標識一定要注意這一點;

   爲了證明 ID 返回的是單個元素,而元素標籤名和類(class)返回的是多個,我們可以採用 jQuery 核心自帶的一個屬性 length 或 size()方法來查看返回的元素個數。

        在dom.js中輸入以下代碼來查看         (註釋前面代碼)

        alert($('#box').size());
	alert($('div').size());
	alert($('.pox').size()); //注意在寫上這段代碼時注意html頁面中增加class 屬性
    根據查看結果可知  id 1個; div 3 個; class 3個; length同樣也可以,大家可以試一下length,需要注意的是length是一個屬性,不是一個方法,所以它不需要後面加括號;

我們也可以根據get獲取具體的對應屬性值;得到原生值

	$('div').eq(1).css('color','red');
      jQuery 選擇器的寫法與 CSS 選擇器十分類似,只不過他們的功能不同。CSS 找到元素後添加的是單一的樣式,而 jQuery 則添加的是動作行爲。最重要的一點是:CSS 在添加樣式的時候,高級選擇器會對部分瀏覽器不兼容,而 jQuery 選擇器在添加 CSS 樣式的時候卻不必爲此煩惱。

    html代碼修改

	  <div id='box'>
			<p> 常規選擇器 </p>
			<p> 常規選擇器 </p>
			<p> 常規選擇器 </p>
			<div>
				<p> 常規選擇器 </p>
				<p> 常規選擇器 </p>
				<p> 常規選擇器 </p>
			</div>
	  </div>
style.css

  #box  > p {   // 只給子節點增加樣式
	color:red;      
  }
測試效果發現,只有前三個變了顏色,如果想讓所有都變呢 只需要把大於號去掉即可

在ie6,ie7.ie8.ie9 測試發現,在IE6中是不出來的,低版本顯示有問題

在來看一下jQuery寫法

dom.js

$(function{
    $('#box > p ').css('color','red')
})
經測試發現都可以顯示
        jQuery 選擇器支持 CSS1、CSS2 的全部規則,支持 CSS3 部分實用的規則,同時它還有少量獨有的規則。所以,對於已經掌握 CSS 的開發人員,學習 jQuery 選擇器幾乎是零成本。而 jQuery 選擇器在獲取節點對象的時候不但簡單, 還內置了容錯功能, 這樣避免像 JavaScript那樣每次對節點的獲取需要進行有效的判斷;

      html頁面修改成如下

  <div id = "box">常規選擇器</div>
 dom.js修改如下

$(function{
    $('#pox ').css('color','red')
})
頁面沒有反應,通過firebug可以發現,代碼沒有報錯,頁面也沒有變化

利用原生javascript寫法來看

$(function(){
      document.getElementById('pox').style.color='red';
});
查看發現代碼有報錯,把‘ pox’改成'box'剛正常

 //很多情況下有動態生成DOM的問題,會導致執行不存在的ID選擇器
	 //$('#pox ').css('color','red')    這就是jquery的容錯功能
	 //如果必須要驗證時我們可以採用下面的方法來驗證;
	 if($('#pox ').size>0){
		 $('#pox ').css('color','red')
	 }
	 if($('#pox ').get(0)){
		 ……
	 }
	  if($('#pox ')[0]){
		 ……
	 }


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