● 在指定的上下文搜索
● *
● .class
● element(即 tagName)
● #id
● selector1,selector2,selectorN(并集)
● ancestor descendant(直接孩子 + 间接孩子)
● parent > child(直接孩子)
● prev + next
● prev ~ siblings
● :animated
● :eq(index)
● :even
● dd
● :first
● :last
● :gt(index)
● :lt(index)
● :header
● :not(selector)
● :contains(text)
● :empty
● :has(selector)(text)
● :parent
● :hidden
● :visible
● [attribute]
● [attribute=value]
● [attribute!=value]
● [attribute*=value]
● [attribute^=value]
● [attribute$=value]
● [selector1][selector2][selectorN]
● :first-child
● :last-child
● :nth-child(index/even/odd/equation)
● nly-child
● form
● form object attribue
- /**
- * 在指定的上下文环境中搜索满足选择器表达式的 jQuery 对象。
- *
- * @selector(String) 选择器
- * @context(Selector, DOM, jQuery 对象) 上下文环境(可选)。若不提供,则在整个文档中搜索;
- * 若提供,则在当前的上下文环境中搜索
- * @return jQuery Object(Array<Element>)
- */
- $(selector, context);
● *
- /**
- * 匹配所有元素,多用于结合上下文来搜索。
- *
- * @return jQuery Object(Array<Element>)
- */
- $("*");
● .class
- /**
- * 根据给定的类匹配元素。
- *
- * @className(String) 类名
- * @return jQuery Object(Array<Element>)
- */
- $(".className");
● element(即 tagName)
- /**
- * 根据给定的元素名(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> ]
● #id
- /**
- * 根据给定的 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> ]
● selector1,selector2,selectorN(并集)
- /**
- * 将每一个选择器匹配到的元素合并后一起返回。
- * 你可以指定任意多个选择器,并将匹配到的元素合并到一个结果内。
- *
- * @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> ]
● ancestor descendant(直接孩子 + 间接孩子)
- /**
- * 在给定的祖先元素下匹配所有的后代(直接孩子 + 间接孩子)元素。
- *
- * @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" /> ]
● parent > child(直接孩子)
- /**
- * 在给定的父元素下匹配所有的子元素(直接孩子)。
- *
- * @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" /> ]
● prev + next
- /**
- * 匹配所有紧接在 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" /> ]
● prev ~ siblings
- /**
- * 匹配 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" /> ]
● :animated
- /**
- * 匹配所有正在执行动画效果的元素。
- *
- * @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);
- });
● :eq(index)
- /**
- * 匹配一个给定索引值的元素。
- *
- * @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> ]
● :even
- /**
- * 匹配所有索引值为偶数的元素,从 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> ]
● dd
- /**
- * 匹配所有索引值为奇数的元素,从 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> ]
● :first
- /**
- * 匹配找到的第一个元素。等价于 :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> ]
● :last
- /**
- * 匹配找到的最后一个元素。
- *
- * @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> ]
● :gt(index)
- /**
- * 匹配所有大于给定索引值的元素。
- *
- * @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> ]
● :lt(index)
- /**
- * 匹配所有小于给定索引值的元素。
- *
- * @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> ]
● :header
- /**
- * 匹配如 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> ]
● :not(selector)
- /**
- * 去除所有与给定选择器匹配的元素。
- *
- * @selector(Selector) 用于筛选的选择器
- * @return jQuery Object(Array<Element>)
- */
- // 例子:查找所有未选中的 input 元素。
- <input name="apple" />
- <input name="flower" checked="checked" />
- $("input:not(:checked)") -> [ <input name="apple" /> ]
● :contains(text)
- /**
- * 匹配包含给定文本的元素。
- *
- * @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> ]
● :empty
- /**
- * 匹配所有不包含子元素或者文本的空元素。
- *
- * @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> ]
● :has(selector)(text)
- /**
- * 匹配含有选择器所匹配的元素的元素。
- *
- * @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> ]
● :parent
- /**
- * 匹配含有子元素或者文本的元素。
- *
- * @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> ]
● :hidden
- /**
- * 匹配所有的不可见元素,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> ]
● :visible
- /**
- * 匹配所有的可见元素。
- *
- * @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> ]
● [attribute]
- /**
- * 匹配包含给定属性的元素(若某个元素有这个属性,可是值为 "",那么这个元素不将被包含进来)。
- *
- * @attribute(String) 属性名
- * @return jQuery Object(Array<Element>)
- */
- // 例子:查找所有含有 id 属性的 div 元素。
- <div>
- <p>Hello!</p>
- </div>
- <div id="test2"></div>
- $("div[id]") -> [ <div id="test2"></div> ]
● [attribute=value]
- /**
- * 匹配给定的属性是某个特定值的元素。
- *
- * @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" /> ]
● [attribute!=value]
- /**
- * 匹配给定的属性是不包含某个特定值的元素。
- *
- * @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" /> ]
● [attribute*=value]
- /**
- * 匹配给定的属性是以包含某些值的元素。
- *
- * @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" /> ]
● [attribute^=value]
- /**
- * 匹配给定的属性是以某些值开始的元素。
- *
- * @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" /> ]
● [attribute$=value]
- /**
- * 匹配给定的属性是以某些值结尾的元素。
- *
- * @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" /> ]
● [selector1][selector2][selectorN]
- /**
- * 复合属性选择器,需要同时满足多个条件时使用。
- *
- * @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" /> ]
● :first-child
- /**
- * 匹配第一个子元素。
- * :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> ]
● :last-child
- /**
- * 匹配最后一个子元素。
- * :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> ]
● :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);
- *
- * @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> ]
● nly-child
- /**
- * 如果某个元素是父元素中唯一的子元素,那它(子元素)将会被匹配。
- * 如果父元素中含有其他元素,那它(子元素)将不会被匹配。
- *
- * @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> ]
● form
- <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" /> ]
● form object attribue
- <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> ]