jQuery 学习七(选择器)

[b][color=#345286] ● 在指定的上下文搜索[/color][/b]

/**
* 在指定的上下文环境中搜索满足选择器表达式的 jQuery 对象。
*
* @selector(String) 选择器
* @context(Selector, DOM, jQuery 对象) 上下文环境(可选)。若不提供,则在整个文档中搜索;
* 若提供,则在当前的上下文环境中搜索
* @return jQuery Object(Array<Element>)
*/
$(selector, context);


[b][color=#345286] ● *[/color][/b]

/**
* 匹配所有元素,多用于结合上下文来搜索。
*
* @return jQuery Object(Array<Element>)
*/
$("*");


[b][color=#345286] ● .class[/color][/b]

/**
* 根据给定的类匹配元素。
*
* @className(String) 类名
* @return jQuery Object(Array<Element>)
*/
$(".className");


[b][color=#345286] ● element(即 tagName)[/color][/b]

/**
* 根据给定的元素名(tagName)匹配符合的元素。
*
* @tagName(String) 一个用于搜索的元素。指向 DOM 节点的标签名。
* @return jQuery Object(Array<Element>)
*/
$("tagName");

// 例子:查找 DIV 元素。
<div>DIV1</div>
<div>DIV2</div>
<span>SPAN</span>

$("div") -> [ <div>DIV1</div>, <div>DIV2</div> ]


[b][color=#345286] ● #id[/color][/b]

/**
* 根据给定的 ID 匹配一个元素。
*
* @id(String) 元素的 id 属性中给定的值。
* @return jQuery Object(Element)
*/
$("#id");

// 例子:查找 ID 为 "myDiv" 的元素
<div id="notMe"><p>id="notMe"</p></div>
<div id="myDiv">id="myDiv"</div>

$("#myDiv") -> [ <div id="myDiv">id="myDiv"</div> ]


[b][color=#345286] ● selector1,selector2,selectorN(并集)[/color][/b]

/**
* 将每一个选择器匹配到的元素合并后一起返回。
* 你可以指定任意多个选择器,并将匹配到的元素合并到一个结果内。
*
* @selector1(Selector) 一个有效的选择器
* @selector2(Selector) 另一个有效的选择器
* @selectorN(Selector) (可选) 任意多个有效选择器
* @return jQuery Object(Array<Element>)
*/
$("selector1,selector2,selectorN");

// 例子:找到匹配任意一个类的元素。
<div>div</div>
<p class="myClass">p class="myClass"</p>
<span>span</span>
<p class="notMyClass">p class="notMyClass"</p>

$("div,span,p.myClass") ->
[ <div>div</div>, <p class="myClass">p class="myClass"</p>, <span>span</span> ]


[b][color=#345286] ● ancestor descendant(直接孩子 + 间接孩子)[/color][/b]

/**
* 在给定的祖先元素下匹配所有的后代(直接孩子 + 间接孩子)元素。
*
* @ancestor(Selector) 任何有效选择器
* @descendant(Selector) 用以匹配元素的选择器,并且它是第一个选择器的后代元素
* @return jQuery Object(Array<Element>)
*/
$("ancestor descendant");

// 例子:找到表单中所有的 input 元素。
<form>
<label>Name:</label>
<input name="name" />
<fieldset>
<label>Newsletter:</label>
<input name="newsletter" />
</fieldset>
</form>
<input name="none" />

$("form input") -> [ <input name="name" />, <input name="newsletter" /> ]


[b][color=#345286] ● parent > child(直接孩子)[/color][/b]

/**
* 在给定的父元素下匹配所有的子元素(直接孩子)。
*
* @parent(Selector) 任何有效选择器
* @child(Selector) 用以匹配元素的选择器,并且它是第一个选择器的子元素
* @return jQuery Object(Array<Element>)
*/
$("parent > child");

// 例子:匹配表单中所有的子级 input 元素。
<form>
<label>Name:</label>
<input name="name" />
<fieldset>
<label>Newsletter:</label>
<input name="newsletter" />
</fieldset>
</form>
<input name="none" />

$("form > input") -> [ <input name="name" /> ]


[b][color=#345286] ● prev + next[/color][/b]

/**
* 匹配所有紧接在 prev 元素后的 next 元素。
*
* @prev(Selector) 任何有效选择器
* @next(Selector) 一个有效选择器并且紧接着第一个选择器
* @return jQuery Object(Array<Element>)
*/
$("prev + next");

// 例子:匹配所有跟在 label 后面的 input 元素。
<form>
<label>Name:</label>
<input name="name" />
<fieldset>
<label>Newsletter:</label>
<input name="newsletter" />
</fieldset>
</form>
<input name="none" />

$("label + input") -> [ <input name="name" />, <input name="newsletter" /> ]


[b][color=#345286] ● prev ~ siblings[/color][/b]

/**
* 匹配 prev 元素之后的所有 siblings 元素。
*
* @prev(Selector) 任何有效选择器
* @siblings(Selector) 一个选择器,并且它作为第一个选择器的同辈
* @return jQuery Object(Array<Element>)
*/
$("prev ~ siblings");

// 例子:找到所有与表单同辈的 input 元素。
<form>
<label>Name:</label>
<input name="name" />
<fieldset>
<label>Newsletter:</label>
<input name="newsletter" />
</fieldset>
</form>
<input name="none" />

$("form ~ input") -> [ <input name="none" /> ]


[b][color=#345286] ● :animated[/color][/b]

/**
* 匹配所有正在执行动画效果的元素。
*
* @prev(Selector) 任何有效选择器
* @siblings(Selector) 一个选择器,并且它作为第一个选择器的同辈
* @return jQuery Object(Array<Element>)
*/

// 例子:只有对不在执行动画效果的元素执行一个动画特效。
<button id="run">Run</button><div></div>

$("#run").click(function() {
$("div:not(:animated)").animate({ left: "+=20" }, 1000);
});


[b][color=#345286] ● :eq(index)[/color][/b]

/**
* 匹配一个给定索引值的元素。
*
* @index (Number) 从 0 开始计数的索引值
* @return jQuery Object(Element)
*/

/*
* 例子:查找表格的第二行。即在所有的 tr 中得到第二个 tr。此方法只会得到一个结果集。此方式拿不到每个
* table 的第二行,拿到只是页面所有 tr 中的第二个 tr。若想得到每个表格的第二行,需要用到 nth-child
* 后续讲到的 :gt, :lt, :first, :last, :even, :odd 都是这样的逻辑
*/
<table>
<tr><td>Header 1</td></tr>
<tr><td>Value 1</td></tr>
<tr><td>Value 2</td></tr>
</table>

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

$("tr:eq(1)") -> [ <tr><td>Value 1</td></tr> ]

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

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

$("tr:eq(1)") -> [ <tr><td>Header 1-1</td></tr> ]


[b][color=#345286] ● :even[/color][/b]

/**
* 匹配所有索引值为偶数的元素,从 0 开始计数。
*
* @return jQuery Object(Array<Element>)
*/

// 例子:查找表格的 1, 3, 5 ... 行(即索引值 0, 2, 4 ... )。
// 和 :eq 一样,它是在页面所有的元素中取 even。要取每个表格的 even 行,就不能像 :eq 一样用 :nth-child 了,需要用到筛选:$(table).find(tr:even);
<table>
<tr><td>Header 1</td></tr>
<tr><td>Value 1</td></tr>
<tr><td>Value 2</td></tr>
</table>

$("tr:even") -> [ <tr><td>Header 1</td></tr>, <tr><td>Value 2</td></tr> ]


[b][color=#345286] ● :odd[/color][/b]

/**
* 匹配所有索引值为奇数的元素,从 0 开始计数
*
* @return jQuery Object(Array<Element>)
*/

// 例子:查找表格的 2, 4, 6 ... 行(即索引值 1, 3, 5 ... )。
// 和 :eq 一样,它是在页面所有的元素中取 odd。要取每个表格的 odd 行,就不能像 :eq 一样用 :nth-child 了,需要用到筛选:$(table).find(tr:odd);
<table>
<tr><td>Header 1</td></tr>
<tr><td>Value 1</td></tr>
<tr><td>Value 2</td></tr>
</table>

$("tr:odd") -> [ <tr><td>Value 1</td></tr> ]


[b][color=#345286] ● :first[/color][/b]

/**
* 匹配找到的第一个元素。等价于 :eq(0)
*
* @return jQuery Object(Element)
*/

// 例子:查找表格的第一行。
<table>
<tr><td>Header 1</td></tr>
<tr><td>Value 1</td></tr>
<tr><td>Value 2</td></tr>
</table>

$("tr:first") -> [ <tr><td>Header 1</td></tr> ]


[b][color=#345286] ● :last[/color][/b]

/**
* 匹配找到的最后一个元素。
*
* @return jQuery Object(Element)
*/

// 例子:查找表格的最后一行。
<table>
<tr><td>Header 1</td></tr>
<tr><td>Value 1</td></tr>
<tr><td>Value 2</td></tr>
</table>

$("tr:last") -> [ <tr><td>Value 2</td></tr> ]


[b][color=#345286] ● :gt(index)[/color][/b]

/**
* 匹配所有大于给定索引值的元素。
*
* @index(Number) 从 0 开始计数的索引值
* @return jQuery Object(Array<Element>)
*/

// 例子:查找第 2, 3 行,即索引值是 1 和 2,也就是比 0 大。
<table>
<tr><td>Header 1</td></tr>
<tr><td>Value 1</td></tr>
<tr><td>Value 2</td></tr>
</table>

$("tr:gt(0)") -> [ <tr><td>Value 1</td></tr>, <tr><td>Value 2</td></tr> ]


[b][color=#345286] ● :lt(index)[/color][/b]

/**
* 匹配所有小于给定索引值的元素。
*
* @index(Number) 从 0 开始计数的索引值
* @return jQuery Object(Array<Element>)
*/

// 例子:查找第 1, 2 行,即索引值是 0 和 1,也就是比 2 小。
<table>
<tr><td>Header 1</td></tr>
<tr><td>Value 1</td></tr>
<tr><td>Value 2</td></tr>
</table>

$("tr:lt(2)") -> [ <tr><td>Header 1</td></tr>, <tr><td>Value 1</td></tr> ]


[b][color=#345286] ● :header[/color][/b]

/**
* 匹配如 h1, h2, h3 之类的标题元素。
*
* @return jQuery Object(Array<Element>)
*/

// 例子:给页面内所有标题加上背景色。
<h1>Header 1</h1>
<p>Contents 1</p>
<h2>Header 2</h2>
<p>Contents 2</p>

$(":header").css("background", "#EEE") ->
[ <h1 style="background:#EEE;">Header 1</h1>, <h2 style="background:#EEE;">Header 2</h2> ]


[b][color=#345286] ● :not(selector)[/color][/b]

/**
* 去除所有与给定选择器匹配的元素。
*
* @selector(Selector) 用于筛选的选择器
* @return jQuery Object(Array<Element>)
*/

// 例子:查找所有未选中的 input 元素。
<input name="apple" />
<input name="flower" checked="checked" />

$("input:not(:checked)") -> [ <input name="apple" /> ]


[b][color=#345286] ● :contains(text)[/color][/b]

/**
* 匹配包含给定文本的元素。
*
* @text(String) 一个用以查找的字符串
* @return jQuery Object(Array<Element>)
*/

// 例子:查找所有包含 "John" 的 div 元素。
<div><span>John Re</span></div>
<div>George Martin</div>
<div>Malcom John Sinclair</div>
<div>J. Ohn</div>

$("div:contains('John')") -> [ <div><span>John Re</span></div>, <div>Malcom John Sinclair</div> ]


[b][color=#345286] ● :empty[/color][/b]

/**
* 匹配所有不包含子元素或者文本的空元素。
*
* @return jQuery Object(Array<Element>)
*/

// 例子:查找所有不包含子元素或者文本的空元素。
<table>
<tr><td>Value 1</td><td></td></tr>
<tr><td>Value 2</td><td></td></tr>
</table>

$("td:empty") -> [ <td></td>, <td></td> ]


[b][color=#345286] ● :has(selector)(text)[/color][/b]

/**
* 匹配含有选择器所匹配的元素的元素。
*
* @selector(Selector) 一个用于筛选的选择器
* @return jQuery Object(Array<Element>)
*/

// 例子:给所有包含 p 元素的 div 元素添加一个 text 类。
<div><span><p>Hello</p></span></div>
<div>Hello again!</div>

$("div:has(p)").addClass("text") -> [ <div class="text"><span><p>Hello</p></span></div> ]


[b][color=#345286] ● :parent[/color][/b]

/**
* 匹配含有子元素或者文本的元素。
*
* @return jQuery Object(Array<Element>)
*/

// 例子:查找所有含有子元素或者文本的 td 元素。
<table>
<tr><td>Value 1</td><td></td></tr>
<tr><td>Value 2</td><td></td></tr>
</table>

$("td:parent") -> [ <td>Value 1</td>, <td>Value 2</td> ]


[b][color=#345286] ● :hidden[/color][/b]

/**
* 匹配所有的不可见元素,input 元素的 type 属性为 "hidden" 时也会被匹配到。
*
* @return jQuery Object(Array<Element>)
*/

// 例子:查找所有不可见的 tr 元素。
<table>
<tr style="display:none"><td>Value 1</td></tr>
<tr><td>Value 2</td></tr>
</table>

$("tr:hidden") -> [ <tr style="display:none"><td>Value 1</td></tr> ]


[b][color=#345286] ● :visible[/color][/b]

/**
* 匹配所有的可见元素。
*
* @return jQuery Object(Array<Element>)
*/

// 例子:查找所有可见的 tr 元素。
<table>
<tr style="display:none"><td>Value 1</td></tr>
<tr><td>Value 2</td></tr>
</table>

$("tr:visible") -> [ <tr><td>Value 2</td></tr> ]


[b][color=#345286] ● [attribute][/color][/b]

/**
* 匹配包含给定属性的元素(若某个元素有这个属性,可是值为 "",那么这个元素不将被包含进来)。
*
* @attribute(String) 属性名
* @return jQuery Object(Array<Element>)
*/

// 例子:查找所有含有 id 属性的 div 元素。
<div>
<p>Hello!</p>
</div>
<div id="test2"></div>

$("div[id]") -> [ <div id="test2"></div> ]


[b][color=#345286] ● [attribute=value][/color][/b]

/**
* 匹配给定的属性是某个特定值的元素。
*
* @attribute(String) 属性名
* @value(String) 属性值。引号在大多数情况下是可选的。但在遇到诸如属性值包含 "]" 时,用以避免冲突。
* @return jQuery Object(Array<Element>)
*/

// 例子:查找所有 name 属性是 "newsletter" 的 input 元素。
<input type="checkbox" name="newsletter" value="Hot Fuzz" />
<input type="checkbox" name="newsletter" value="Cold Fusion" />
<input type="checkbox" name="accept" value="Evil Plans" />

$("input[name='newsletter']").attr("checked", true) -> [ <div id="test2"></div> ] ->
[ <input type="checkbox" name="newsletter" value="Hot Fuzz" checked="true" />,
<input type="checkbox" name="newsletter" value="Cold Fusion" checked="true" /> ]


[b][color=#345286] ● [attribute!=value][/color][/b]

/**
* 匹配给定的属性是不包含某个特定值的元素。
*
* @attribute(String) 属性名
* @value(String) 属性值。引号在大多数情况下是可选的。但在遇到诸如属性值包含 "]" 时,用以避免冲突。
* @return jQuery Object(Array<Element>)
*/

// 例子:查找所有 name 属性不是 "newsletter" 的 input 元素。
<input type="checkbox" name="newsletter" value="Hot Fuzz" />
<input type="checkbox" name="newsletter" value="Cold Fusion" />
<input type="checkbox" name="accept" value="Evil Plans" />

$("input[name!='newsletter']").attr("checked", true) ->
[ <input type="checkbox" name="accept" value="Evil Plans" checked="true" /> ]


[b][color=#345286] ● [attribute*=value][/color][/b]

/**
* 匹配给定的属性是以包含某些值的元素。
*
* @attribute(String) 属性名
* @value(String) 属性值。引号在大多数情况下是可选的。但在遇到诸如属性值包含 "]" 时,用以避免冲突。
* @return jQuery Object(Array<Element>)
*/

// 例子:查找所有 name 包含 "man" 的 input 元素。
<input name="man-news" />
<input name="milkman" />
<input name="letterman2" />
<input name="newmilk" />

$("input[name*='man']") ->
[ <input name="man-news" />, <input name="milkman" />, <input name="letterman2" /> ]


[b][color=#345286] ● [attribute^=value][/color][/b]

/**
* 匹配给定的属性是以某些值开始的元素。
*
* @attribute(String) 属性名
* @value(String) 属性值。引号在大多数情况下是可选的。但在遇到诸如属性值包含 "]" 时,用以避免冲突。
* @return jQuery Object(Array<Element>)
*/

// 例子:查找所有 name 以 "news" 开始的 input 元素。
<input name="newsletter" />
<input name="milkman" />
<input name="newsboy" />

$("input[name^='news']") -> [ <input name="newsletter" />, <input name="newsboy" /> ]


[b][color=#345286] ● [attribute$=value][/color][/b]

/**
* 匹配给定的属性是以某些值结尾的元素。
*
* @attribute(String) 属性名
* @value(String) 属性值。引号在大多数情况下是可选的。但在遇到诸如属性值包含 "]" 时,用以避免冲突。
* @return jQuery Object(Array<Element>)
*/

// 例子:查找所有 name 以 "letter" 结尾的 input 元素。
<input name="newsletter" />
<input name="milkman" />
<input name="jobletter" />

$("input[name$='letter']") -> [ <input name="newsletter" />, <input name="jobletter" /> ]


[b][color=#345286] ● [selector1][selector2][selectorN][/color][/b]

/**
* 复合属性选择器,需要同时满足多个条件时使用。
*
* @selector1(Selector) 属性选择器
* @selector2(Selector) 另一个属性选择器,用以进一步缩小范围
* @selectorN(Selector) 任意多个属性选择器
* @return jQuery Object(Array<Element>)
*/

// 例子:找到所有含有 id 属性,并且它的 name 属性是以 "man" 结尾的。
<input id="man-news" name="man-news" />
<input name="milkman" />
<input id="letterman" name="new-letterman" />
<input name="newmilk" />

$("input[id][name$='man']") -> [ <input id="letterman" name="new-letterman" /> ]


[b][color=#345286] ● :first-child[/color][/b]

/**
* 匹配第一个子元素。
* :first 只匹配一个元素,而此选择符将为每个父元素匹配一个子元素
*
* @return jQuery Object(Array<Element>)
*/

// 例子:在每个 ul 中查找第一个 li。
<ul>
<li>John</li>
<li>Karl</li>
<li>Brandon</li>
</ul>
<ul>
<li>Glen</li>
<li>Tane</li>
<li>Ralph</li>
</ul>

$("ul li:first-child") -> [ <li>John</li>, <li>Glen</li> ]


[b][color=#345286] ● :last-child[/color][/b]

/**
* 匹配最后一个子元素。
* :last 只匹配一个元素,而此选择符将为每个父元素匹配一个子元素
*
* @return jQuery Object(Array<Element>)
*/

// 例子:在每个 ul 中查找最后一个 li。
<ul>
<li>John</li>
<li>Karl</li>
<li>Brandon</li>
</ul>
<ul>
<li>Glen</li>
<li>Tane</li>
<li>Ralph</li>
</ul>

$("ul li:last-child") -> [ <li>Brandon</li>, <li>Ralph</li> ]


[b][color=#345286] ● :nth-child(index/even/odd/equation)[/color][/b]

/**
* 匹配其父元素下的第 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);
*
* @index(Number) 要匹配元素的序号,从 1 开始
* @return jQuery Object(Array<Element>)
*/

// 例子:在每个 ul 查找第 2 个li。
<ul>
<li>John</li>
<li>Karl</li>
<li>Brandon</li>
</ul>
<ul>
<li>Glen</li>
<li>Tane</li>
<li>Ralph</li>
</ul>

$("ul li:nth-child(2)") -> [ <li>Karl</li>, <li>Tane</li> ]


[b][color=#345286] ● :only-child[/color][/b]

/**
* 如果某个元素是父元素中唯一的子元素,那它(子元素)将会被匹配。
* 如果父元素中含有其他元素,那它(子元素)将不会被匹配。
*
* @return jQuery Object(Array<Element>)
*/

// 例子:在 ul 中查找是唯一子元素的 li。
<ul>
<li>John</li>
<li>Karl</li>
<li>Brandon</li>
</ul>
<ul>
<li>Glen</li>
</ul>

$("ul li:only-child") -> [ <li>Glen</li> ]


[b][color=#345286] ● form[/color][/b]

<form>
<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="hidden" />
<input type="button" />
<select><option /></select>
<textarea></textarea>
<button></button>
</form>

// 匹配按钮?
$(":button") -> [ <input type="button" />,<button></button> ]
// 匹配复选框
$(":checkbox") -> [ <input type="checkbox" /> ]
// 匹配文件域
$(":file") -> [ <input type="file" /> ]
// 匹配不可见元素,或者 type 为 hidden 的元素
$("input:hidden") -> [ <input type="hidden" /> ]
// 匹配图像域
$("input:image") -> [ <input type="image" /> ]
// 匹配 input, textarea, select 和 button 元素
$(":input") -> 全部
// 匹配密码框
$(":password") -> [ <input type="password" /> ]
// 匹配单选按钮
$(":radio") -> [ <input type="radio" /> ]
// 匹配重置按钮
$(":reset") -> [ <input type="reset" /> ]
// 匹配提交按钮
$(":submit") -> [ <input type="submit" /> ]
// 匹配单行文本框
$(":text") -> $(":submit") -> [ <input type="text" /> ]


[b][color=#345286] ● form object attribue[/color][/b]

<form>
<input type="checkbox" name="newsletter" checked="checked" value="Daily" />
<input type="checkbox" name="newsletter" value="Weekly" />
<input type="checkbox" name="newsletter" checked="checked" value="Monthly" />
<input name="email" disabled="disabled" />

<select>
<option value="1">Flowers</option>
<option value="2" selected="selected">Gardens</option>
<option value="3">Trees</option>
</select>
</form>

// 匹配被选择的元素(复选框、单选框等,不包括 select 中的 option)
$("input:checked") ->
[ <input type="checkbox" name="newsletter" checked="checked" value="Daily" />,
<input type="checkbox" name="newsletter" checked="checked" value="Monthly" /> ]
// 匹配可用元素
$("input:enabled") ->
<input type="checkbox" name="newsletter" checked="checked" value="Daily" />
<input type="checkbox" name="newsletter" value="Weekly" />
<input type="checkbox" name="newsletter" checked="checked" value="Monthly" />
// 匹配不可用元素
$("input:disabled") -> [ <input name="email" disabled="disabled" /> ]
// 匹配选中的 option 元素
$("select option:selected") -> [ <option value="2" selected="selected">Gardens</option> ]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值