全選擇器(*選擇器)
在CSS中,經常會在第一行寫下這樣一段樣式
* {padding: 0; margin: 0;}
通配符*意味着給所有的元素設置默認的邊距。jQuery中我們也可以通過傳遞*選擇器來選中文檔頁面中的元素
表示方式爲:$( “*” )
拋開jQuery,如果要獲取文檔中所有的元素,通過document.getElementsByTagName()中傳遞”*”同樣可以獲取到
下面代碼給出了兩種方式獲取並設置所有元素
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title></title>
<style>
div {
width: 100px;
height: 90px;
float: left;
padding: 5px;
margin: 5px;
background-color: #EEEEEE;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
</head>
<body>
<div class="aaron">
<p>class="aaron"</p>
<p>選中</p>
</div>
<div class="aaron">
<p>class="aaron"</p>
<p>選中</p>
</div>
<div class="imooc">
<p>class="imooc"</p>
<p>jQuery選中</p>
</div>
<div class="imooc">
<p>class="imooc"</p>
<p>jQuery選中</p>
</div>
<script type="text/javascript">
//獲取頁面中所有的元素
var elements1 = document.getElementsByTagName('*');
</script>
<script type="text/javascript">
//獲取頁面中所有的元素
var elements2 = $("*") ;
//原生與jQuery方法比較
//===表示數據和類型都相等
if(elements2.length === elements1.length){
elements2.css("border","1px solid red");
}
</script>
</body>
</html>
不難發現,id、class、tag都可以通過原生的方法獲取到對應的節點,但是我們還需要考慮一個兼容性的問題,我這裏順便提及一下,比如:
1.IE會將註釋節點實現爲元素,所以在IE中調用getElementsByTagName裏面會包含註釋節點,這個通常是不應該的
2.getElementById的參數在IE8及較低的版本不區分大小寫
3.IE7及較低的版本中,表單元素中,如果表單A的name屬性名用了另一個元素B的ID名並且A在B之前,那麼getElementById會選中A
4.IE8及較低的版本,瀏覽器不支持getElementsByClassName
看到了吧,作爲一名合格的前端不是那麼簡單的,就一個基本的選擇器上面都需要做這麼多兼容,幸好有jQuery的出現,讓我們省了很多功夫。