jQuery選擇器 之詳述
2016-07-28 10:42
你不在的日子
閱讀(218)
評論(0)
編輯
收藏
舉報
jQuery選擇器
一. 單詞小計
Pervious 上一頁sibling 同級first 第一last 最後not 不
Even 偶數 odd 奇數 header 頁眉
一.jQuery選擇器概述
選擇器是jQuery的根基,在jQuery中,對事件處理、周遊DOM和Ajax操作都依賴于選擇器。是以,如果能熟練的使用選擇器,不僅能簡化代碼,而且可以達到事半功倍的效果。jQuery選擇器完全繼承了CSS的風格。利用jQuery選擇器,可以非常便捷的找出特定的DOM元素,然後為它們添加相應的行為,而無需擔心浏覽器是否支援這一選擇器。
jQuery選擇器與CSS選擇器的不同之處就在于,jQuery選擇器擷取元素後,為該元素添加的是行為,是頁面互動變得更加豐富多彩。
二.通過CSS選擇器擷取元素
jQuery支援大多數CSS選擇器,其中最常用的有CSS的基本選擇器,層次選擇器和屬性選擇器,在jQuery中,與他們對應的分别是jQuery基本選擇器,層次選擇器和屬性選擇器,他們的構成規則與CSS選擇器完全相同。
一.基本選擇器
基本選擇器主要包括标簽選擇器、類選擇器、ID選擇器、并集選擇器、交集選擇器和全局選擇器。
1. id選擇器(指定id元素)
将id="one"的元素背景色設定為黑色。(id選擇器返單個元素)
$(document).ready(function () {
$(\'#one\').css(\'background\', \'#000\');
});
2. class選擇器(周遊css類元素)
将class="cube"的元素背景色設為黑色
$(document).ready(function () {
$(\'.cube\').css(\'background\', \'#000\');
});
3. 标簽選擇器(周遊html元素)
将p元素的文字大小設定為12px
$(document).ready(function () {
$(\'p\').css(\'font-size\', \'12px\');
});
4. 全局(*) 選擇器(周遊所有元素)
$(document).ready(function () {
// 周遊所有元素,将字型顔色設定為紅色
$(\'*\').css(\'color\', \'#FF0000\');
});
5. 并集選擇器
$(document).ready(function () {
// 将p元素和div元素的顔色設為紅色
$(\'p, div\').css(\'color\', \'#FF0000\');
}
6. 交集選擇器
$(document).ready(function () {
// 将所有擁有class為tittle的h2元素顔色設為紅色 $(‘h2.tittle’).css(\'color\', \'#FF0000\')
}
二、 層次選擇器
jQuery中有4種層次選擇器,他們分别是後代選擇器,子選擇器,相鄰元素選擇器和同輩元素選擇器,其中最常用的是後代選擇器和子選擇器,他們和css中的後代選擇器的文法及選取範圍均相同。
子選擇器的範圍要比後代選擇器的選取範圍小
1.子選擇器 parent > child(直系子元素)
$(document).ready(function () {
// 選取div下的第一代span元素,将字型顔色設為紅色
$(\'div > span\').css(\'color\', \'#FF0000\');
});
下面的代碼,隻有第一個span會變色,第二個span不屬于div的一代子元素,顔色保持不變。
<div>
<span>123</span>
<p>
<span>456</span>
</p>
</div>
2.相鄰元素選擇器 prev + next(下一個兄弟元素,等同于next()方法)
$(document).ready(function () {
// 選取class為item的下一個div兄弟元素
$(\'.item + div\').css(\'color\', \'#FF0000\');
// 等價代碼
//$(\'.item\').next(\'div\').css(\'color\', \'#FF0000\');
});
下面的代碼,隻有123和789會變色,而456不是相鄰,是以不會變色
<p class="item"></p>
<div>123</div>
<div>456</div>
<span class="item"></span>
<div>789</div>
3. 同輩元素選擇器prev ~ siblings(prev元素的所有兄弟元素,等同于nextAll()方法)
$(document).ready(function () {
// 選取class為inside之後的所有div兄弟元素
$(\'.inside ~ div\').css(\'color\', \'#FF0000\');
// 等價代碼
//$(\'.inside\').nextAll(\'div\').css(\'color\', \'#FF0000\');
});
下面的代碼,G2和G4會變色
<div class="inside">G1</div>
<div>G2</div>
<span>G3</span>
<div>G4</div>
4. 後代選擇器
$(function()){
// 選取id為myid下的所有<span>元素
$(‘#myid span’).css(\'color\', \'#FF0000\');
};
下面的代碼000和222都會變色
<div id="myid">
<h1>111</h1>
<p><span>222</span></p>
<span>000</span>
</div>
三.屬性選擇器
1. [attribute]用法
定義:比對包含給定屬性的元素,判斷擁有某個屬性的元素
$("div[id]").addClass("highlight");
//查找所有含有ID屬性的div元素
2. [attribute=value]用法
定義:比對給定的屬性是某個特定值的元素,判斷某個元素的屬性值相等
$("input[name=\'basketball\']").attr("checked",true);
//name屬性值為basketball的input元素選中
3. [attribute!=value]用法
定義:比對給定的屬性是不包含某個特定值的元素,判斷某個元素的屬性值不等
$("input[name!=\'basketball\']").attr("checked",true);
//name屬性值不為basketball的input元素選中
//此選擇器等價于:not([attr=value])
要比對含有特定屬性但不等于特定值的元素,請使用
[attr]:not([attr=value])
$("input:not(input[name=\'basketball\'])").attr("checked",true);
4. [attribute^=value]用法
定義:比對給定的屬性是以某些值開始的元素,判斷某個屬性值以value為開始值
$("input[name^=\'foot\']").attr("checked",true);
//查找所有 name 以 \'foot\' 開始的 input 元素
5. [attribute$=value]用法
定義:比對給定的屬性是以某些值結尾的元素,判斷某個屬性值以value為結尾值
$("input[name$=\'ball\']").attr("checked",true);
//查找所有 name 以 \'ball\' 結尾的 input 元素
6. [attribute*=value]用法
定義:比對給定的屬性是以包含某些值的元素,判斷某個屬性值包含value
$("input[name*=\'sket\']").attr("checked",true);
//查找所有 name 包含 \'sket\' 的 input 元素
7. [selector1][selector2][selectorN]用法
定義:複合屬性選擇器,需要同時滿足多個條件時使用,多個屬性值去交集
$("input[id][name$=\'ball\']").attr("checked",true);
//找到所有含有 id屬性,并且它的 name屬性是以 ball結尾的input 元素
三.通過條件過濾選取元素
過濾選擇器主要通過特定的過濾規則來篩選出所需的DOM元素,過濾規則與CSS中的僞類文法相同,即選擇器都以一個冒号(:)開頭,冒号前是進行過濾的元素。
按照不同的過濾條件,過濾選擇器可以分為基本過濾,内容過濾,可見性過濾,屬性過濾,子元素過濾和表單對象屬性過濾選擇器。
一.基本過濾選擇器
1 :first和:last(取第一個元素或最後一個元素)
$(document).ready(function () {
$(\'span:first\').css(\'color\', \'#FF0000\');
$(\'span:last\').css(\'color\', \'#FF0000\');
});下面的代碼,G1(first元素)和G3(last元素)會變色
<span>G1</span>
<span>G2</span>
<span>G3</span>
2 :not(取非元素)
$(document).ready(function () {
$(\'div:not(.wrap)\').css(\'color\', \'#FF0000\');
});下面的代碼,G1會變色
<div>G1</div>
<div class="wrap">G2</div>
但是,請注意下面的代碼:
<div>
G1
<div class="wrap">G2</div>
</div>
當G1所在div和G2所在div是父子關系時,G1和G2都會變色。
3 :even和:odd(取偶數索引或奇數索引元素,索引從0開始,even表示偶數,odd表示奇數)
$(document).ready(function () {
$(\'li:even\').css(\'background\', \'#EEE\'); // 偶數行顔色
$(\'li:odd\').css(\'background\', \'#DADADA\'); // 奇數行顔色
});A、C行顔色#EEE(第一行的索引為0),B、D行顔色#DADADA
<ul>
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
</ul>
4 :eq(x) (取指定索引的元素)
$(document).ready(function () {
$(\'li:eq(2)\').css(\'background\', \'#FF0000\');
});更改第三行的背景色,在上面的代碼中C的背景會變色。
5 :gt(x)和:lt(x) (取大于x索引或小于x索引的元素)
$(document).ready(function () {
$(\'ul li:gt(2)\').css(\'color\', \'#FF0000\');
$(\'ul li:lt(2)\').css(\'color\', \'#0000FF\');
});L4和L5會是紅色,L1和L2會是藍色,L3是預設顔色
<ul>
<li>L1</li>
<li>L2</li>
<li>L3</li>
<li>L4</li>
<li>L5</li>
</ul>
6 :header(取H1~H6标題元素)
$(document).ready(function () {
$(\':header\').css(\'background\', \'#EFEFEF\');
});下面的代碼,H1~H6的背景色都會變
<h1>H1</h1>
<h2>H2</h2>
<h3>H3</h3>
<h4>H4</h4>
<h5>H5</h5>
<h6>H6</h6>
7. :focus (目前擷取焦點的元素)
$(document).ready(function () {
$(\':focus\').css(\'background\', \'#000\');
});改變目前擷取焦點的元素的背景顔色
二.可見性過濾選擇器
在jQuery中,通過元素顯示狀态選取元素的選擇器稱為可見性過濾選擇器
1 :hidden(取隐藏(不可見)的元素)
jQuery至1.3.2之後的:hidden選擇器僅比對display:none或<input type="hidden" />的元素,而不比對visibility: hidden或opacity:0的元素。這也意味着hidden隻比對那些“隐藏的”并且不占空間的元素,像visibility:hidden或opactity:0的元素占據了空間,會被排除在外。
<style type="text/css">
div {
margin: 10px;
width: 200px;
height: 40px;
border: 1px solid #FF0000;
display: block;
}
.hid-1 {
display: none;
}
.hid-2 {
visibility: hidden;
}
</style>
<script src="js/jquery-1.12.3.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$(\'div:hidden\').show(500);
alert($(\'input:hidden\').val());
});
</script>
</head>
<body>
<div class="hid-1">display: none</div>
<div class="hid-2">visibility: hidden</div>
<input type="hidden" value="hello" />
</body>
先彈出"hello"對話框,然後hid-1會顯示,hid-2仍然是不可見的。
2 :visible(取可見的元素)
<script type="text/javascript">
$(document).ready(function() {
$(\'div:visible\').css(\'background\', \'#EEADBB\');
});
</script>
<div class="hid-1">display: none</div>
<div class="hid-2">visibility: hidden</div>
<input type="hidden" value="hello"/>
<div>
我有背景色
</div>
代碼中,最後一個div會有背景色
四.jQuery選擇器注意事項
一.選擇器中含有特殊符号的注意事項
在W3C規範中,規定屬性值中不能含有某些特殊字元,但在實際開發中,可能會遇到表達式中有“#”和“.”等特殊字元情況,如果按照普通方式處理就會出錯。課用轉義符轉義解決。
<div id="id#a">aa</div>
<div id="id[2]">cc</div>
按照普通方式擷取,如
$(‘#id#a’);
$(‘#id[2]’);
不能正确擷取元素,正确寫法如下
$(‘#id\\#a’);
$(‘#id\\[2\\]’);
二.選擇器中含有空格的注意事項
選擇器中空格是不容忽視的,多一個空格或少一個空格,可能會得到截然不同的結果。
jQuery選擇器
一. 單詞小計
Pervious 上一頁sibling 同級first 第一last 最後not 不
Even 偶數 odd 奇數 header 頁眉
一.jQuery選擇器概述
選擇器是jQuery的根基,在jQuery中,對事件處理、周遊DOM和Ajax操作都依賴于選擇器。是以,如果能熟練的使用選擇器,不僅能簡化代碼,而且可以達到事半功倍的效果。jQuery選擇器完全繼承了CSS的風格。利用jQuery選擇器,可以非常便捷的找出特定的DOM元素,然後為它們添加相應的行為,而無需擔心浏覽器是否支援這一選擇器。
jQuery選擇器與CSS選擇器的不同之處就在于,jQuery選擇器擷取元素後,為該元素添加的是行為,是頁面互動變得更加豐富多彩。
二.通過CSS選擇器擷取元素
jQuery支援大多數CSS選擇器,其中最常用的有CSS的基本選擇器,層次選擇器和屬性選擇器,在jQuery中,與他們對應的分别是jQuery基本選擇器,層次選擇器和屬性選擇器,他們的構成規則與CSS選擇器完全相同。
一.基本選擇器
基本選擇器主要包括标簽選擇器、類選擇器、ID選擇器、并集選擇器、交集選擇器和全局選擇器。
1. id選擇器(指定id元素)
将id="one"的元素背景色設定為黑色。(id選擇器返單個元素)
$(document).ready(function () {
$(\'#one\').css(\'background\', \'#000\');
});
2. class選擇器(周遊css類元素)
将class="cube"的元素背景色設為黑色
$(document).ready(function () {
$(\'.cube\').css(\'background\', \'#000\');
});
3. 标簽選擇器(周遊html元素)
将p元素的文字大小設定為12px
$(document).ready(function () {
$(\'p\').css(\'font-size\', \'12px\');
});
4. 全局(*) 選擇器(周遊所有元素)
$(document).ready(function () {
// 周遊所有元素,将字型顔色設定為紅色
$(\'*\').css(\'color\', \'#FF0000\');
});
5. 并集選擇器
$(document).ready(function () {
// 将p元素和div元素的顔色設為紅色
$(\'p, div\').css(\'color\', \'#FF0000\');
}
6. 交集選擇器
$(document).ready(function () {
// 将所有擁有class為tittle的h2元素顔色設為紅色 $(‘h2.tittle’).css(\'color\', \'#FF0000\')
}
二、 層次選擇器
jQuery中有4種層次選擇器,他們分别是後代選擇器,子選擇器,相鄰元素選擇器和同輩元素選擇器,其中最常用的是後代選擇器和子選擇器,他們和css中的後代選擇器的文法及選取範圍均相同。
子選擇器的範圍要比後代選擇器的選取範圍小
1.子選擇器 parent > child(直系子元素)
$(document).ready(function () {
// 選取div下的第一代span元素,将字型顔色設為紅色
$(\'div > span\').css(\'color\', \'#FF0000\');
});下面的代碼,隻有第一個span會變色,第二個span不屬于div的一代子元素,顔色保持不變。
<div>
<span>123</span>
<p>
<span>456</span>
</p>
</div>
2.相鄰元素選擇器 prev + next(下一個兄弟元素,等同于next()方法)
$(document).ready(function () {
// 選取class為item的下一個div兄弟元素
$(\'.item + div\').css(\'color\', \'#FF0000\');
// 等價代碼
//$(\'.item\').next(\'div\').css(\'color\', \'#FF0000\');
});下面的代碼,隻有123和789會變色,而456不是相鄰,是以不會變色
<p class="item"></p>
<div>123</div>
<div>456</div>
<span class="item"></span>
<div>789</div>
3. 同輩元素選擇器prev ~ siblings(prev元素的所有兄弟元素,等同于nextAll()方法)
$(document).ready(function () {
// 選取class為inside之後的所有div兄弟元素
$(\'.inside ~ div\').css(\'color\', \'#FF0000\');
// 等價代碼
//$(\'.inside\').nextAll(\'div\').css(\'color\', \'#FF0000\');
});下面的代碼,G2和G4會變色
<div class="inside">G1</div>
<div>G2</div>
<span>G3</span>
<div>G4</div>
4. 後代選擇器
$(function()){
// 選取id為myid下的所有<span>元素
$(‘#myid span’).css(\'color\', \'#FF0000\');
};下面的代碼000和222都會變色
<div id="myid">
<h1>111</h1>
<p><span>222</span></p>
<span>000</span>
</div>
三.屬性選擇器
1. [attribute]用法
定義:比對包含給定屬性的元素,判斷擁有某個屬性的元素
$("div[id]").addClass("highlight");
//查找所有含有ID屬性的div元素
2. [attribute=value]用法
定義:比對給定的屬性是某個特定值的元素,判斷某個元素的屬性值相等
$("input[name=\'basketball\']").attr("checked",true);
//name屬性值為basketball的input元素選中
3. [attribute!=value]用法
定義:比對給定的屬性是不包含某個特定值的元素,判斷某個元素的屬性值不等
$("input[name!=\'basketball\']").attr("checked",true);
//name屬性值不為basketball的input元素選中
//此選擇器等價于:not([attr=value])
要比對含有特定屬性但不等于特定值的元素,請使用[attr]:not([attr=value])
$("input:not(input[name=\'basketball\'])").attr("checked",true);
4. [attribute^=value]用法
定義:比對給定的屬性是以某些值開始的元素,判斷某個屬性值以value為開始值
$("input[name^=\'foot\']").attr("checked",true);
//查找所有 name 以 \'foot\' 開始的 input 元素
5. [attribute$=value]用法
定義:比對給定的屬性是以某些值結尾的元素,判斷某個屬性值以value為結尾值
$("input[name$=\'ball\']").attr("checked",true);
//查找所有 name 以 \'ball\' 結尾的 input 元素
6. [attribute*=value]用法
定義:比對給定的屬性是以包含某些值的元素,判斷某個屬性值包含value
$("input[name*=\'sket\']").attr("checked",true);
//查找所有 name 包含 \'sket\' 的 input 元素
7. [selector1][selector2][selectorN]用法
定義:複合屬性選擇器,需要同時滿足多個條件時使用,多個屬性值去交集
$("input[id][name$=\'ball\']").attr("checked",true);
//找到所有含有 id屬性,并且它的 name屬性是以 ball結尾的input 元素
三.通過條件過濾選取元素
過濾選擇器主要通過特定的過濾規則來篩選出所需的DOM元素,過濾規則與CSS中的僞類文法相同,即選擇器都以一個冒号(:)開頭,冒号前是進行過濾的元素。
按照不同的過濾條件,過濾選擇器可以分為基本過濾,内容過濾,可見性過濾,屬性過濾,子元素過濾和表單對象屬性過濾選擇器。
一.基本過濾選擇器
1 :first和:last(取第一個元素或最後一個元素)
$(document).ready(function () {
$(\'span:first\').css(\'color\', \'#FF0000\');
$(\'span:last\').css(\'color\', \'#FF0000\');
});下面的代碼,G1(first元素)和G3(last元素)會變色
<span>G1</span>
<span>G2</span>
<span>G3</span>
2 :not(取非元素)
$(document).ready(function () {
$(\'div:not(.wrap)\').css(\'color\', \'#FF0000\');
});下面的代碼,G1會變色
<div>G1</div>
<div class="wrap">G2</div>
但是,請注意下面的代碼:
<div>
G1
<div class="wrap">G2</div>
</div>
當G1所在div和G2所在div是父子關系時,G1和G2都會變色。
3 :even和:odd(取偶數索引或奇數索引元素,索引從0開始,even表示偶數,odd表示奇數)
$(document).ready(function () {
$(\'li:even\').css(\'background\', \'#EEE\'); // 偶數行顔色
$(\'li:odd\').css(\'background\', \'#DADADA\'); // 奇數行顔色
});A、C行顔色#EEE(第一行的索引為0),B、D行顔色#DADADA
<ul>
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
</ul>
4 :eq(x) (取指定索引的元素)
$(document).ready(function () {
$(\'li:eq(2)\').css(\'background\', \'#FF0000\');
});更改第三行的背景色,在上面的代碼中C的背景會變色。
5 :gt(x)和:lt(x) (取大于x索引或小于x索引的元素)
$(document).ready(function () {
$(\'ul li:gt(2)\').css(\'color\', \'#FF0000\');
$(\'ul li:lt(2)\').css(\'color\', \'#0000FF\');
});L4和L5會是紅色,L1和L2會是藍色,L3是預設顔色
<ul>
<li>L1</li>
<li>L2</li>
<li>L3</li>
<li>L4</li>
<li>L5</li>
</ul>
6 :header(取H1~H6标題元素)
$(document).ready(function () {
$(\':header\').css(\'background\', \'#EFEFEF\');
});下面的代碼,H1~H6的背景色都會變
<h1>H1</h1>
<h2>H2</h2>
<h3>H3</h3>
<h4>H4</h4>
<h5>H5</h5>
<h6>H6</h6>
7. :focus (目前擷取焦點的元素)
$(document).ready(function () {
$(\':focus\').css(\'background\', \'#000\');
});改變目前擷取焦點的元素的背景顔色
二.可見性過濾選擇器
在jQuery中,通過元素顯示狀态選取元素的選擇器稱為可見性過濾選擇器
1 :hidden(取隐藏(不可見)的元素)
jQuery至1.3.2之後的:hidden選擇器僅比對display:none或<input type="hidden" />的元素,而不比對visibility: hidden或opacity:0的元素。這也意味着hidden隻比對那些“隐藏的”并且不占空間的元素,像visibility:hidden或opactity:0的元素占據了空間,會被排除在外。
<style type="text/css">
div {
margin: 10px;
width: 200px;
height: 40px;
border: 1px solid #FF0000;
display: block;
}
.hid-1 {
display: none;
}
.hid-2 {
visibility: hidden;
}
</style>
<script src="js/jquery-1.12.3.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$(\'div:hidden\').show(500);
alert($(\'input:hidden\').val());
});
</script>
</head>
<body>
<div class="hid-1">display: none</div>
<div class="hid-2">visibility: hidden</div>
<input type="hidden" value="hello" />
</body>
先彈出"hello"對話框,然後hid-1會顯示,hid-2仍然是不可見的。
2 :visible(取可見的元素)
<script type="text/javascript">
$(document).ready(function() {
$(\'div:visible\').css(\'background\', \'#EEADBB\');
});
</script>
<div class="hid-1">display: none</div>
<div class="hid-2">visibility: hidden</div>
<input type="hidden" value="hello"/>
<div>
我有背景色
</div>
代碼中,最後一個div會有背景色
四.jQuery選擇器注意事項
一.選擇器中含有特殊符号的注意事項
在W3C規範中,規定屬性值中不能含有某些特殊字元,但在實際開發中,可能會遇到表達式中有“#”和“.”等特殊字元情況,如果按照普通方式處理就會出錯。課用轉義符轉義解決。
<div id="id#a">aa</div>
<div id="id[2]">cc</div>
按照普通方式擷取,如
$(‘#id#a’);
$(‘#id[2]’);
不能正确擷取元素,正确寫法如下
$(‘#id\\#a’);
$(‘#id\\[2\\]’);
二.選擇器中含有空格的注意事項
選擇器中空格是不容忽視的,多一個空格或少一個空格,可能會得到截然不同的結果。
-
标簽 jQuery選擇器
, jquery
, 選擇器