jQuery选择器

jQuery选择器支持CSS1、CSS2的全部和部分CSS3选择器,同时也拥有少量独有的选择器。jQueryt选择器分为基本选择器、层次选择器、过滤选择器和表单选择器。为了练习先写一个html页面。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>jQuery selector</title>
  <script type="text/javascript" src="jQuery/jquery-3.1.0.js"></script>
  <style type="text/css">
    div, span, p{
      width:140px;
      height: 140px;
      margin: 5px;
      background-color: #aaa;
      border: #000 1px solid;
      float: left;
      font-size: 17px;
      font-family: Verdana;
    }
    div.mini{          
      width: 55px;
      height: 55px;
      background-color: #aaa;
      font-size: 12px;
    }
    div.hide{
      display : none;
    }
  </style>
  <script type="text/javascript">
    $(document).ready(function(){
    });
  </script>
</head>
<body>
  <h1>选择器</h1>
  <div class="one" id="one">
    id为one,class为one的div
    <div class="mini">class为mini</div>
  </div>
  <div class="two" id="two" title="test">
    id为tow,class为one,title为test的div
    <div class="mini" title="other">class为mini,title为other</div>
    <div class="mini" title="test">class为mini,title为test</div>
  </div>
  <div class="one">
    <div class="mini">class为mini</div>
    <div class="mini">class为mini</div>
    <div class="mini">class为mini</div>
    <div class="mini"></div>
  </div>
  <div class="one">
    <div class="mini">class为mini</div>
    <div class="mini">class为mini</div>
    <div class="mini">class为mini</div>
    <div class="mini" title="test">class为mini,title为test</div>
  </div>
  <div style="display:none" class="one">
    style的display为"one"的div
  </div>
   <div class="hide">class为hide的div</div>
  <div>
    包含input的type为"hidden"的div<input type="hidden" size="8" />
  </div>
  <span id="mover">正在执行动画的span</span>
</body>
</html>

基本选择器

下面讲各个选择器,并写出示例代码,添加到ready函数中并在浏览器中看看效果。
id选择器:$("#test"),选取id为test的元素,返回单个元素

$("#one").css("background", "#bbffaa");//改变id为one的元素的背景色

.class选择器:$(".test")选取所有class为test的元素,返回集合元素

$(".mini").css("background", "#bbffaa");//改变class为mini的所有元素的背景色

element选择器:$("p"),选取所有的<p>元素,返回集合元素

$("div").css("background", "#bbffaa");//改变元素名为<div>的所有元素的背景色

选择器:$(""),选择所有元素,返回集合元素

$("*").css("background", "#bbffaa");//改变所有元素的背景色

selector1,selector2,......,selectorN选择器:$("div,span,p.myClass")选取所有<div>,<span>和拥有class为myClass的<p>标签的一组元素,返回集合元素

$("span, #two").css("background", "#bbffaa");//改变所有的<span>元素和id为two的元素的背景色

层次选择器

如果想通过DOM元素之间的层次关系来获取特定的元素,例如后代元素、子元素、相邻元素和同辈元素等,那么层次选择器是一个非常好的选择。

$("ancestor descendent"),选取ancestor元素里的所有descendent(后代)元素,返回集合元素

$("body div").css("background", "#bbffaa");//改变body内所有div元素的背景色

$("parent>child"),选取parent元素下的child(子)元素,与前一个选择器有区别,前一个选择器选择的是后代元素,返回集合元素

$("body > div").css("background", "#bbffaa");//改变body内子<div>元素的背景色

$("prev + next"),选取紧接在prev元素后的next元素,返回集合元素

$(".one + div").css("background", "#bbffaa");//改变class为one的下一同辈<div>元素的背景色

$("prev~siblings"),选取prev元素之后的所有silibings元素,返回集合元素

$("#two ~ div").css("background", "#bbffaa");//改变id为two元素之后所有同辈元div元素的背景色

在层次选择器中,第1、2个选择器比较常用,面后面2个因为在jQuery里可以使用更简单的方法替代,比较少用。$(".one + div")与$(".one").next("div")等价;$("#prev ~ div")与$("#prev").nextAll("div");等价

过滤选择器

过滤选择器可以分为基本过滤、内容过滤、可见性过滤、属性过滤、子元素过滤和表单对象属性过滤选择器

基本过滤

:first,选取第1个元素,返回单个元素

$("div:first").css("background", "#bbffaa");//改变第一个div元素的背景色

:last,选取最后一个元素,返回单个元素

$("div:last").css("background", "#bbffaa");//改变 变最一一个div元素的背景色

:not(selector),却除所有与给定远择器匹配的元素

$("div:not(.one)").css("background", "#bbffaa");//改变class不为one的div元素的背景色

:even,选取索引值是偶数的所有元素,索引从0开始

$("div:even").css("background", "#bbffaa");//改变索引值为偶数的div元素的背景色

:odd,选取索引值是奇数的所有元素,索引从0开始

$("div:odd").css("background", "#bbffaa");//改变索引值为奇数的div元素的背景色

:eq(index),选取索引值等于index的元素

$("div:eq(3)").css("background","#bbffaa");//改变索引值为3的div元素的背景色

:gt(index),选取索引值大于index的元素

$("div:gt(3)").css("background","#bbffaa");//改变索引值大于3的div元素的背景色

:lt(index),选取索引值小于index的元素

$("div:lt(3)").css("background","#bbffaa");//改变索引值小于3的div元素的背景色

:header,选取所有的标题元素,便如h1,h2,h3等

$(":header").css("background","#bbffaa");//改变所有标题元素的背景色

:animated,选取当前正在执行动画的所有元素

$(":animated").css("background","#bbffaa");//改变所有正在执行动画的元素的背景色

:focus,选取当前获取焦点的元素

$(":focus").css("background","#bbffaa");//改变当前获取焦点的元素的背景色

内容过滤

:contains(text),选取含有文本内容为"text"的元素

$("div:contains(di)").css("background", "#bbffaa");//改变含有文本"di"的div元素的背景色

:empty,选取不包含子元素或者文本的空元素

$("div:empty").css("background", "#bbffaa");//改变不包含子元素(包括文本元素)的div元素的背景色

:has(selector),选取含有选择器所匹配的元素的元素

$("div:has('.mini')").css("background", "#bbffaa");//改变含有class为mini元素的div元素的背景色

:parent,选取含有子元素或者文本元素的元素

$("div:parent").css("background", "#bbffaa");//改变含有子元素(包括文本元素)的div元素背景色

属性过滤

[attribute],选取拥有此属性的元素

$("div[title]").css("background", "#bbffaa");//改变含有属性title的div元素的背景色

[attribute=value],选取属性的值为value的元素

$("div[title=test]").css("background", "#bbffaa");//改变title属性值等于"test"的div元属的背景色  

[attribute!=value],选取属性的值不等于value的元素

$("div[title!=test]").css("background", "#bbffaa");//改变title属性值不等于"test"的div元属背景色

[attribute^=value],选取属性的值以value开始的元素

$("div[title^=te]").css("background", "#bbffaa");//改变属性title值以"te"开始的所有div元素背景色

[attribute$=value],选取属性的值以value结束的元素

$("div[title$=est]").css("background", "#bbffaa");//改变属性title值以"est"结尾的所有div元素背景色

[attribute*=value],选取属性的值含有value的元素

$("div[title*=es]").css("background", "#bbffaa");//改变属性title值包含"es"的div元素的背景色

[attribute|=value],选取属性等于给定字符串或以该字符串为前缀(该字符后跟一个连字符“-”)的元素

[attribute~=value],选取属性用空格分隔的值中包含一个给定值的元素

[attribute1][attribute2][attributeN],用属性选择器并成一个复合属性选择器,满足多个条件的元素

$("div[id][title*=es]").css("background", "#bbffaa");//改变含有属性id且属性title值含有"es"的div元素的背景色

可见性过滤

:hidden,选取所有不可见的元素

$("div:hidden").show(3000);//显示隐藏的div元素

:visible,选取所有可见的元素

$("div:visible").css("background", "#ff6500");//改变所有可见的div元素的背景色

子元素过滤

:nth-chile(index/even/odd/equation),选取每个父元素下的第index个子元素或者奇偶元素(index从1开始算起。详细功能如下:

  1. :nth-child(even)能选取每个父元素下的索引值是偶数的元素
  2. :nth-child(odd)能选取每个父元素下索引值是奇数的元素
  3. :nth-child(2)能选取每个父元素下索引值等于2的元素
  4. :nth-child(3n)能选取每个父元素下的索引值是3的倍数的元数,n从1开始
  5. :nth-child(3n+1)能选取每个父元素下的索引值是3n+1的元素,n从1开始
 $("div.one :nth-child(2)").css("background", "#bbffaa");//改变每个class为one的div父元素下的第2个子元素的背景色

:first-child,选取父元素的第1个子元素

$("div.one :first-child").css("background", "#bbffaa");//改变每个class为one的div父元素下的第1个子元素的背景色

:last-child 选取每个父元素的最后一个子元素

$("div.one :last-child").css("background", "#bbffaa");//改变每个class为one的div父元素下的最后1个子元素的背景色

:only-child,如果某个元素是它父元素中惟一的子元素,那么将会匹配,如果父元素中含有其他元素,刚不会被匹配

$("div.one :only-child").css("background", "#bbffaa");//改变每个class为one的div父元素只有一个子元素,则改变背景色

表单对象属性过滤

这个选择器主要是对所选择的表单元素进行过滤。

为了学习表单对象属性过滤选择器需要新建一个html页面包含表单

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>表单对象属性过滤选择器</title>
</head>
<body>
  <form action="#" id="form1">
    可用元素:<input name="add" value="可用文本框" /><br />
    不可用元素:<input name="email" disabled="disabled" value="不可用文本框" /><br />
    可用元素:<input name="che" value="可用文本框" /><br />
    不可用元素:<input name="name" disabled="disabled" value="不可用文本框" /><br />
    <br />
    多选框:<br />
    <input type="checkbox" name="newsletter" checked="checked" value="test1" />test1
    <input type="checkbox" name="newsletter" value="test2" />test2
    <input type="checkbox" name="newsletter" value="test3" />test3
    <input type="checkbox" name="newsletter" checked="checked" value="test4" />test4
    <input type="checkbox" name="newsletter" value="test5" />test5
    <div></div>
    <br /><br />
    下拉列表1:<br />
    <select name="test" multiple="multiple" style="height:100px">
      <option>浙江</option>
      <option selected="selected">湖南</option>
      <option>北京</option>
      <option selected="selected">天津</option>
      <option>广州</option>
      <option>湖北</option>
    </select>
    <br />
    <br />
    下拉列表2:<br />
    <select name="test2">
      <option>浙江</option>
      <option>湖南</option>
      <option selected="selected">北京</option>
      <option>天津</option>
      <option>广州</option>
      <option>湖北</option>
    </select>
  </form>
</body>
</html>

:enabled,选取所有可用元素

:disabled,选取所有不可用元素

:checked,选取所有被选中的元素(单选框,复选框)

:selected,选取所有被选中的选项元素(下拉列表)

表单选择器

:input 选取所有的<input>,<textarea>,<select>,<button>元素
:text 先取所有单行文本框
:password 选取所有密码框
:radio 选取所有单选框
:checkbox 选取所有多选框
:submit 选取所有拉交按钮
:image 选取所有的图像按钮
:reset 选取所有的重置按钮
:button 选取所有的按钮
:file 选取所有上传域
:hidden 选取所有不可见的元素(已经在不可见性过滤选择器中讲过)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容