其他分享
首页 > 其他分享> > 【转】 jQuery学习笔记:选择器(Selectors)

【转】 jQuery学习笔记:选择器(Selectors)

作者:互联网

【转】 jQuery学习笔记:选择器(Selectors)

一、基本
1、#id
根据给定的ID匹配一个元素。
如果选择器中包含特殊字符,可以用两个斜杠转义。
返回值 Element
参数
id (String) : 用于搜索的,通过元素的 id 属性中给定的值
示例:

$(document).ready(function() {
    var oDiv = $("#myDiv");
    if (oDiv)
        alert(oDiv.html());
});

文档片段:

<div id="notMe"><p>id="notMe"</p></div>
<div id="myDiv">id="myDiv"</div> 

有特殊字符的情况:
文档片段:

<span id="foo:bar">test1</span>
<span id="foo[bar]">test2</span>

jquery代码:

Code
//查找含有特殊字符的元素
$(document).ready(function() {
    var oIdArr = new Array('#foo\\:bar', '#foo\\[bar\\]');
    for (var i = 0; i < oIdArr.length; i++) {
        var oSpan = $(oIdArr[i]);
        if (oSpan)
            alert(oSpan.html());
    }
});

2、element
根据给定的元素名匹配所有元素
返回值 Array<Element>
参数
element (String) : 一个用于搜索的元素。指向 DOM 节点的标签名。
示例:

Code

$(document).ready(function() {
    var divArr = $("div"); //查找DIV 元素
    for (var i = 0; i < divArr.length; i++) {
        var oDiv = $(divArr[i]);
        if (oDiv)
            alert(oDiv.html());
    }
});

文档片段:

<div>DIV1</div>
<div>DIV2</div>
<span>SPAN</span>

3、.class
根据给定的类匹配元素
返回值 Array<Element>
参数
class (String) : 一个用以搜索的类。一个元素可以有多个类,只要有一个符合就能被匹配到。
示例:

Code
//查找所有类是 "myClass" 的元素. 
$(document).ready(function() {
    var eleArr = $(".myClass"); //查找class为myclass的元素
    for (var i = 0; i < eleArr.length; i++) {
        var ele = $(eleArr[i]);
        if (ele)
            alert(ele.html());
    }
});

文档片段:

    <div class="notMe">
        div class="notMe"</div>
    <div class="myClass">
        div class="myClass"</div>
    <span class="myClass">span class="myClass"</span>

4、*
匹配所有元素,多用于结合上下文来搜索。
返回值 Array<Element>
示例:

Code
//找到每一个元素 
$(document).ready(function() {
    var eleArr = $("*"); //找到每一个元素 
    for (var i = 0; i < eleArr.length; i++) {
        var ele = $(eleArr[i]);
        if (ele)
            alert(ele.html());
    }
});

5、selector1,selector2,selectorN
将每一个选择器匹配到的元素合并后一起返回。
可以指定任意多个选择器,并将匹配到的元素合并到一个结果内。
返回值 Array<Element>
参数
selector1 (Selector) : 一个有效的选择器
selector2 (Selector) : 另一个有效的选择器
selectorN (Selector) : (可选) 任意多个有效选择器
示例:

Code
//找到匹配任意一个类的元素
$(document).ready(function() {
var eleArr = $("div,span,p.myClass"); //找到匹配任意一个类的元素 
    for (var i = 0; i < eleArr.length; i++) {
        var ele = $(eleArr[i]);
        if (ele)
            alert(ele.html());
    }
});

二、层级
1、ancestor descendant
在给定的祖先元素下匹配所有的后代元素
返回值 Element
参数
ancestor (Selector) : 任何有效选择器
descendant (Selector) : 用以匹配元素的选择器,并且它是第一个选择器的后代元素
示例:

Code
//找到表单中所有的 input 元素 
$(document).ready(function() {
    var eleArr = $("form input"); //找到表单中所有的input元素  
    for (var i = 0; i < eleArr.length; i++) {
        var ele = $(eleArr[i]);
        if (ele)
            alert(ele.val());
    }
});

文档片段:

Code
    <form id="form1" >
    <input id="txtTest" type="text" value="text test" />
    <input id="chkTest" type="checkbox"  value="checkbox 0"/>
    </form>
    
    <input id="txtRadio" type="radio" value="radio 1" />

2、parent > child
在给定的父元素下匹配所有的子元素
返回值 Array<Element>
参数
parent (Selector) : 任何有效选择器
child (Selector) : 用以匹配元素的选择器,并且它是第一个选择器的子元素
示例:

Code
//匹配表单中div下的所有的子级input元素
$(document).ready(function() {
    var eleArr = $("div>input"); //匹配表单中div下的所有的子级input元素 
    for (var i = 0; i < eleArr.length; i++) {
        var ele = $(eleArr[i]);
        if (ele)
            alert(ele.val());
    }
});

3、prev + next
匹配所有紧接在 prev 元素后的 next 元素
返回值 Array<Element>
参数
prev (Selector) : 任何有效选择器
next (Selector) :一个有效选择器并且紧接着第一个选择器
示例:

Code
//匹配所有跟在label后面的input元素 
$(document).ready(function() {
    var eleArr = $("label + input"); //匹配所有跟在label后面的input元素 
    for (var i = 0; i < eleArr.length; i++) {
        var ele = $(eleArr[i]);
        if (ele)
            alert(ele.val());
    }
});

文档片段:

Code
    <form id="form1" >
    <div>
    <input id="txtTest" type="text" value="text test" /></div>
    <label></label>
    <input id="chkTest" type="checkbox" checked  value="checkbox 1"/>
    </form>
    
    <label></label>
    <input id="txtRadio" type="radio"  value="radio 0" />

4、prev ~ siblings
匹配 prev 元素之后的所有 siblings 元素(sibling是“兄弟”的意思)
返回值 Array<Element>
参数
prev (Selector) : 任何有效选择器
siblings (Selector) : 一个选择器,并且它作为第一个选择器的同辈
示例:

Code
//找到所有与表单同辈的 input 元素 
$(document).ready(function() {
    var eleArr = $("form ~ input"); //找到所有与表单同辈的 input 元素 
    for (var i = 0; i < eleArr.length; i++) {
        var ele = $(eleArr[i]);
        if (ele)
            alert(ele.val());
    }
});

三、简单
1、:first
匹配找到的第一个元素
返回值 Element
示例:

Code
$(document).ready(function() {
    var eleArr = $("tr:first"); //查找表格的第一行 
    for (var i = 0; i < eleArr.length; i++) {
        var ele = $(eleArr[i]);
        if (ele)
            alert(ele.html());
    }
});

文档片段:

<table>
  <tr><td>Header 1</td></tr>
  <tr><td>Value 1</td></tr>
  <tr><td>Value 2</td></tr>
</table>

2、:last
匹配找到的最后一个元素
返回值 Element
示例:

Code

$(document).ready(function() {
    var eleArr = $("tr:last"); //查找表格的最后一行  
    for (var i = 0; i < eleArr.length; i++) {
        var ele = $(eleArr[i]);
        if (ele)
            alert(ele.html());
    }
});

3、:not(selector)
去除所有与给定选择器匹配的元素
在jQuery 1.3中,已经支持复杂选择器了(例如:not(div a) 和 :not(div,a))
返回值 Array<Element>
参数
selector (Selector) : 用于筛选的选择器
示例:

Code

$(document).ready(function() {
    var eleArr = $("input:not(:checked)"); //查找所有未选中的input元素   
    for (var i = 0; i < eleArr.length; i++) {
        var ele = $(eleArr[i]);
        if (ele)
            alert(ele.val());
    }
});

4、:even
匹配所有索引值为偶数的元素,从 0 开始计数
返回值 Array<Element>
示例:

Code
$(document).ready(function() {
    var eleArr = $("tr:even"); //查找表格的1、3、5行(即索引值0、2、4)
    for (var i = 0; i < eleArr.length; i++) {
        var ele = $(eleArr[i]);
        if (ele)
            alert(ele.html());
    }
});

5、:odd
匹配所有索引值为奇数的元素,从 0 开始计数
返回值 Array<Element>
示例:

Code
$(document).ready(function() {
    var eleArr = $("tr:odd"); //查找表格的2、4、6行(即索引值1、3、5)
    for (var i = 0; i < eleArr.length; i++) {
        var ele = $(eleArr[i]);
        if (ele)
            alert(ele.html());
    }
});

6、:eq(index)
匹配一个给定索引值的元素
返回值 Element
参数
index (Number) : 从 0 开始计数
示例:

$(document).ready(function() {
    var ele = $("tr:eq(1)"); //查找第二行
    if (ele)
        alert(ele.html());
});

7、:gt(index)
匹配所有大于给定索引值的元素
返回值 Array<Element>
参数
index (Number) : 从 0 开始计数
示例:

Code
$(document).ready(function() {
    var eleArr = $("tr:get(0)"); //查找索引值比0大的行
    for (var i = 0; i < eleArr.length; i++) {
        var ele = $(eleArr[i]);
        if (ele)
            alert(ele.html());
    }
});

8、:lt(index)
匹配所有小于给定索引值的元素
返回值 Array<Element>
参数
index (Number) : 从 0 开始计数
示例:

Code
$(document).ready(function() {
    var eleArr = $("tr:lt(2)"); //查找索引值比2小的行
    for (var i = 0; i < eleArr.length; i++) {
        var ele = $(eleArr[i]);
        if (ele)
            alert(ele.html());
    }
});

9、:header
匹配如 h1, h2, h3之类的标题元素
返回值 Array<Element>
示例:

//给页面内所有标题加上背景色
$(document).ready(function() {
    $(":header").css("background", "Red");
});

10、:animated
匹配所有正在执行动画效果的元素
返回值 Array<Element>
示例:

Code

//只有对不在执行动画效果的元素执行一个动画特效 
$("#run").click(function() {
    $("div:animated").toggleClass("colored"); //匹配所有正在执行动画效果的元素
});
function animateIt() {
    $("#mover").slideToggle("slow", animateIt);
}
animateIt();

文档片段:

Code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        div
        {
            background: yellow;
            border: 1px solid #AAA;
            width: 80px;
            height: 80px;
            margin: 5px;
            float: left;
        }
        div.colored
        {
            background: green;
        }
    </style>

    <script src="js/jquery-1.3.1.js" type="text/javascript"></script>

</head>
<body>

    <button id="run">
        Run</button>
    <div>
    </div>
    <div id="mover">
    </div>
    <div>
    </div>

</body>

四、内容
1、:contains(text)
匹配包含给定文本的元素
返回值 Array<Element>
参数
text (String) : 一个用以查找的字符串
示例:

Code
$(document).ready(function() {
    var eleArr = $("div:contains('test')"); //查找所有包含 "test" 的div元素
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i];
        alert(ele.innerHTML);
    }
});

2、:empty
匹配所有不包含子元素或者文本的空元素
返回值 Array<Element>
示例:

Code
$(document).ready(function() {
    var eleArr = $("div:empty"); //查找所有不包含子元素或者文本的空元素 
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i];
        alert(ele.innerHTML);
    }
});

3、:has(selector)
匹配含有选择器所匹配的元素的元素
返回值 Array<Element>
参数
selector (Selector) : 一个用于筛选的选择器
示例:

Code
//显示所有包含p元素的div元素的文本内容
$(document).ready(function() {
    var eleArr = $("div:has(p)");
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i];
        alert(ele.innerHTML);
    }
});

4、:parent
匹配含有子元素或者文本的元素
返回值 Array<Element>
示例:

Code
//查找所有含有子元素或者文本的 td 元素 
$(document).ready(function() {
$("td:parent").fadeTo(1500, 0.3);
    
    var eleArr = $("td:parent");
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i];
        alert(ele.innerHTML);
    }
});

文档片段:

Code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
    td { width:40px; background:green; }
    </style>

    <script src="js/jquery-1.3.1.js" type="text/javascript"></script>

</head>
<body>
  <table>
  <tr><td>Value 1</td><td></td></tr>
  <tr><td>Value 2</td><td></td></tr>
  </table>
</body>
</html>

五、可见性
1、:hidden
匹配所有的不可见元素,input 元素的 type 属性为 "hidden" 的话也会被匹配到
返回值 Array<Element>
示例:

Code
//查找所有不可见的td元素 
$(document).ready(function() {
    var eleArr = $("td:hidden");
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i];
        alert(ele.innerHTML);
    }
});

2、:visible
匹配所有的可见元素
返回值 Array<Element>
示例:

Code
//查找所有可见的td元素 
$(document).ready(function() {
    var eleArr = $("td:visible");
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i];
        alert(ele.innerHTML);
    }
});

By the way,可见性本质上是对应css里的visibility和display的属性设置,读者可自行试验。
六、属性
1、[attribute]
匹配包含给定属性的元素。注意,在jQuery 1.3中,前导的@符号已经被废除!如果想要兼容最新版本,只需要简单去掉@符号即可。
返回值 Array<Element>
参数
attribute (String) : 属性名
示例:

Code
$(document).ready(function() {
    var eleArr = $("div[id]"); //查找所有含有 id 属性的 div 元素 
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i];
        alert(ele.innerHTML);
    }
});

2、[attribute=value]
匹配给定的属性是某个特定值的元素
返回值 Array<Element>
参数
attribute (String) : 属性名
value (String) : 属性值。引号在大多数情况下是可选的。但在遇到诸如属性值包含"]"时,用以避免冲突。
示例:

Code
$(document).ready(function() {
    var eleArr = $("input[name='newsletter']"); //查找所有 name 属性是 newsletter 的 input 元素 
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i];
        alert(ele.value);
    }
});

文档片段:

<input type="checkbox" name="newsletter" value="Hot Fuzz" />
<input type="checkbox" name="newsletter" value="Cold Fusion" />
<input type="checkbox" name="accept" value="Evil Plans" />
 

3、[attribute!=value]
匹配所有不含有指定的属性,或者属性不等于特定值的元素。
此选择器等价于:not([attr=value])
要匹配含有特定属性但不等于特定值的元素,请使用[attr]:not([attr=value])
返回值 Array<Element>
参数
attribute (String) : 属性名
value (String) : 属性值。引号在大多数情况下是可选的。但在遇到诸如属性值包含"]"时,用以避免冲突。
示例:

Code
$(document).ready(function() {
    var eleArr = $("input[name!='newsletter']"); //查找所有 name 属性不是 newsletter 的 input 元素 
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i];
        alert(ele.value);
    }
});

4、[attribute^=value]
匹配给定的属性是以某些值开始的元素
返回值 Array<Element>
参数
attribute (String) : 属性名
value ( String) : 属性值。引号在大多数情况下是可选的。但在遇到诸如属性值包含"]"时,用以避免冲突。
示例:

Code
$(document).ready(function() {
    var eleArr = $("input[name^='newsletter']"); //查找所有 name 以 'news' 开始的 input 元素 
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i];
        alert(ele.value);
    }
});

5、[attribute$=value]
匹配给定的属性是以某些值结尾的元素
返回值 Array<Element>
参数
attribute (String) : 属性名
value ( String) : 属性值。引号在大多数情况下是可选的。但在遇到诸如属性值包含"]"时,用以避免冲突。
示例:

Code
$(document).ready(function() {
    var eleArr = $("input[name$='letter']"); //查找所有 name 以 'letter' 结尾的 input 元素 
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i];
        alert(ele.value);
    }
});

6、[attribute*=value]
匹配给定的属性是以包含某些值的元素
返回值 Array<Element>
参数
attribute (String) : 属性名
value ( String) : 属性值。引号在大多数情况下是可选的。但在遇到诸如属性值包含"]"时,用以避免冲突。
示例:

Code
$(document).ready(function() {
    var eleArr = $("input[name*='let']"); //查找所有 name 包含 'letter' 的 input 元素 
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i];
        alert(ele.value);
    }
});

7、[selector1][selector2][selectorN]
复合属性选择器,需要同时满足多个条件时使用。
返回值 Array<Element>
参数
selector1 (Selector) : 属性选择器
selector2 (Selector) : 另一个属性选择器,用以进一步缩小范围
selectorN (Selector) : 任意多个属性选择器
示例:

Code
$(document).ready(function() {
    var eleArr = $("input[id][name$='vil']"); //找到所有含有 id 属性,并且它的 name 属性是以 vil 结尾的 
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i];
        alert(ele.value);
    }
});

七、子元素
1、:nth-child(index/even/odd/equation)
匹配其父元素下的第N个子或奇偶元素
对比:':eq(index)' 只匹配一个元素,而这个将为每一个父元素匹配子元素。:nth-child从1开始的,而:eq()是从0算起的!
使用方式:
:nth-child(even)
:nth-child(odd)
:nth-child(3n)
:nth-child(2)
:nth-child(3n+1)
:nth-child(3n+2)
返回值 Array<Element>
参数
index (Number) : 要匹配元素的序号,从1开始
示例:

Code
$(document).ready(function() {
    var eleArr = $("ul li:nth-child(2)"); //在每个 ul 查找第 2 个li 
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i];
        alert(ele.innerHTML);
    }
});

文档片段:

<ul>
  <li>John</li>
  <li>Karl</li>
  <li>Brandon</li>
</ul>
<ul>
  <li>Glen</li>
  <li>Tane</li>
  <li>Ralph</li>
</ul>

2、:first-child
匹配第一个子元素
':first' 只匹配一个元素,而此选择符将为每个父元素匹配一个子元素
返回值 Array<Element>
示例:

Code
$(document).ready(function() {
    var eleArr = $("ul li:first-child"); //在每个 ul 查找第 1 个li 
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i];
        alert(ele.innerHTML);
    }
});

3、:last-child
匹配最后一个子元素
':last'只匹配一个元素,而此选择符将为每个父元素匹配一个子元素
返回值 Array<Element>
示例:

Code
$(document).ready(function() {
    var eleArr = $("ul li:last-child"); //在每个 ul 中查找最后一个 li  
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i];
        alert(ele.innerHTML);
    }
});

4、:only-child
如果某个元素是父元素中唯一的子元素,那将会被匹配
如果父元素中含有其他元素,那将不会被匹配。
返回值 Array<Element>
示例:

Code
$(document).ready(function() {
var eleArr = $("ul li:only-child"); //在 ul 中查找是唯一子元素的 li 
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i];
        alert(ele.innerHTML);
    }
});

八、表单
1、:input
匹配所有 input, textarea, select 和 button 元素
返回值 Array<Element>
示例:

Code
$(document).ready(function() {
    var eleArr = $(":input"); //匹配所有 input, textarea, select 和 button 元素
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i]
        alert(ele.type); //输出type (select有option的竟然输出value值 疑问)
    }
});

文档片段:

Code
  <input type="text" />
  <input type="checkbox" />
  <input type="radio" />
  <input type="image" />
  <input type="file" />
  <input type="submit" />
  <input type="reset" />
  <input type="password" />
  <input type="button" />
  <select></select>  <select><option>123</option></select>
  <textarea cols="5" rows="10"></textarea>
  <button></button>

ps:select下面有option的,竟然直接alert出了option的value,奇怪的结果!(按照定义这个应该是jquery的一个bug)
2、:inputType
匹配所有的type为inputType的input元素(hidden比较特殊,单独举例)
返回值 Array<Element>
示例:

Code
$(document).ready(function() {
    //下面的text可以换成password,radio,checkbox,image,file,submit,reset,password
    var eleArr = $(":text"); //匹配所有type为text的元素
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i]
        alert(ele.type); //输出type 
    }
});

3、:hidden
匹配所有不可见元素,或者type为hidden的元素
返回值 Array<Element>
示例:

Code
$(document).ready(function() {
    var eleArr = $(":hidden"); //匹配所有不可见的元素(含input类型为hidden的元素)
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i]
        alert(ele.value); //输出value 
    }
    alert(eleArr.length);

    var eleArr = $("input:hidden"); //匹配所有type为hidden的input元素
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i]
        alert(ele.value); //输出value 
    }
    alert(eleArr.length);
});

九、表单对象属性
1、:enabled
匹配所有可用元素返回值 Array<Element>
示例:

Code
$(document).ready(function() {
    var eleArr = $("input:enabled"); //查找所有可用的input元素 
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i]
        alert(ele.value); //输出value 
    }
});

2、:disabled
匹配所有不可用元素
返回值 Array<Element>
示例:

Code
$(document).ready(function() {
    var eleArr = $("input:disabled"); //查找所有不可用的input元素 
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i]
        alert(ele.value); //输出value 
    }
});

3、:checked
匹配所有选中的被选中元素(复选框、单选框等,不包括select中的option)
返回值 Array<Element>
示例:

Code
$(document).ready(function() {
    var eleArr = $("input:checked"); //查找所有选中的被勾选中的元素 
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i]
        alert(ele.type); //输出type 
    }
});

4、:selected
匹配所有选中的option元素
返回值 Array<Element>
示例:

Code
$(document).ready(function() {
    var eleArr = $("select option:selected"); //匹配所有选中的option元素
    for (var i = 0; i < eleArr.length; i++) {
        var ele = eleArr[i]
        alert(ele.text); //输出text
        alert(ele.value); //输出value 
    }
});

 

标签:jQuery,eleArr,元素,ele,Code,alert,var,Selectors,选择器
来源: https://www.cnblogs.com/Javastudy-note/p/13812648.html