jQuery选择器概述大全

191 阅读3分钟

jQuery 选择器是对HTML元素组或单个元素进行操作,基于元素的id、类、类型、属性属性值等"查找"或选择HTML元素。它基于已经存在的CSS选择器,除此之外,它还有一些自定义的选择器。

  当使用jQuery,我们都转换为jQuery使用,尽量不使用DOM
  $("div").html(""); 添加html
  $("div").text(""); 添加文本
  $("div").width(100);  设置div的行内样式width
  $("div").height(100);  设置div的行内样式width
  $("div").css("color","red");  设置div的行内样式
  $("div").on("click",clickHandler);  给所有div添加点击事件侦听
  $("div").off("click",clickHandler);  给所有div删除点击事件侦听

jQuery对象是一个列表,可以包含很多,也可以包含一个元素, 所有的DOM方法,jQuery对象都不能使用

一.

1.元素选择器

   $("p")

2.#id 选择器

 $("#id名")

3.class 选择器

 $(".class名")

4.将DOM元素转换为jQuery对象

 $(DOM元素)

5.将jQuery元素转换成DOM对象

 var arr=Array.from($("button"));
 console.log(arr);

6.将jQuery列表中指定下标的元素筛选形成新的jQuery对

 $("div").eq(3).css("color","red");
 $("div:eq(3)").css("color","red");

二.

  * 通配符选择器
  div,span  群组选择器
  div span  后代选择器
  div>span  子代选择器
  div+span  紧邻的下一个兄弟选择器
  div~span  div下面的所有兄弟选择器
  console.log( $("li,div"));//群组选择器
  console.log($("ul div"));//后代选择器
  console.log($("li>div"));//子代选择器 
  1. 选择div标签中class是divs的所有元素
 console.log($("div.divs"))

2.选择div标签后代中class是divs的元素

 console.log($("div .divs"));
 console.log($("div").find(".divs"));等同于$("div .divs")

3.所有div的子代有多少个元素

 console.log($("div>*").length);
 console.log($("div").children("span"));等同于$("div>span");

4.查找id是li0的下一个兄弟元素,这个兄弟元素可以是任意元素

 $("#li0+").css("color","red");
 $("#li0+*").css("color","red");

5.查找id是li0的下一个兄弟元素必须是li的,如果不是li元素就不能被选中

 $("#li0+li").css("color","red");
 $("#li0").next("li")  等同于$("#li0+li")
 $("#li0").next()  等同于$("#li0+")

6.查找id是li0的后面所有兄弟元素

 $("#li0~").css("color","red");
 $("#li0~*").css("color","red");

7.查找id是li0的后面所有li标签的兄弟元素

 $("#li0~li").css("color","red");
 $("#li0~span").css("color","red");
 $("#li0").nextAll("li")  等同于$("#li0~li")

8.从id是li0的元素开始向下选择兄弟元素到span元素之前为止

 $("#li0").nextUntil("span").css("color","red");

9.获取id是li0的上一个兄弟元素是li元素的

 $("#li0").prev("li").css("color","red");

10.获取id是li0的向上所有兄弟元素是li元素的

 $("#li0").prevAll("li").css("color","red");

11.从id是li0的元素开始向上选择兄弟元素到span元素之前为止

 $("#li0").prevUntil("span").css("color","red");

12.根据id是li0的元素所有的上下的兄弟元素中是span

 $("#li0").siblings("span").css("color","red");

三.属性选择器

1.选择有type属性的元素

  $("[type]")

2.选择有type和name属性的元素

 $("[type][name]").next("label").css("color","red");

3.选择某个属性是某个值的元素

 $("[abc=3]").css("color","red");

4.选择属性是hobby(hobby是自定义名字)并且值是以a字母开始的元素

 $("[hobby^=a]").css("color","red");

5.选择属性是hobby并且值是以e字母结束的元素

  $("[hobby$=e]").css("color","red");

6.选择属性是hobby但是值不等于ade的所有元素,如果属性没有也会被选中

 $("div[hobby!=ade]").css("color","red");

7.选择属性是toggle,并且这个属性的值是book起头,后面紧跟-的值

 $("[toggle|=book]").css("color","red");

8.选择属性是class,属性值的字符串中含有div3字符的,可以不是一个独立的单词

  $("[class*=div3]").css("color","red");

原生js中变量和函数名都必须使用驼峰式命名,因为js是区分大小写html和css是不区分大小写,所以在html和css中,自定义的名称无法使用驼峰式命名,使用-连接两个单词php中变量名区分大小写,所以使用驼峰式命名,函数名不区分大小写,单词直接使用_连接。

四.过滤器

过滤器 基于选择器的基础上,进行精细的过滤

1.将所有li放在一个列表中,查找它的第一个元素

 $("li:first").css("color","red");
 $("li").first().css("color","red");与上面相同

2.将li是父元素的第一个子元素是li的选中

 $("li:first-child").css("color","red");
  $("li:nth-child(1)").css("color","red");

3.li是不是它父元素中li类型列表的第一个子元素

 $("li:first-of-type").css("color","red");
 $("li:nth-of-type(1)").css("color","red");

4.与上面相同,但是指最后一个

 $("li:last").css("color","red");
 $("li").last().css("color","red");
 $("li:last-child").css("color","red");
 $("li:last-of-type").css("color","red");

5.将所有的li放在一个列表中,并且获取偶数项,这个even的偶数是从0开始

 $("li:even").css("color","red");

6.将li父元素中li类型元素的列表中是偶数项的选中,这个even的偶数也是从1开始

 $("li:nth-of-type(even)").css("color","red");

7.将所有的li放在一个列表中,并且获取奇数项,这个odd的奇数是从0开始

 $("li:odd").css("color","red");

8.将li父元素中li类型元素的列表中是奇数项的选中,这个odd的奇数也是从0开始

 $("li:nth-of-type(odd)").css("color","red");

9.大于div列表的第三项的其他元素

 $("div:gt(3)").css("color","red");

10.小于div列表的第三项的其他元素

 $("div:lt(3)").css("color","red");

11.slice,和数组slice一样

 $("div").slice(2,4).css("color","red");

12.div列表中不是class为divs的元素

 $("div:not(.divs)").css("color","red");

13.div列表中没有class属性的元素

 $("div:not([class])").css("color","red");
 $("div").not(".divs")

14.所有h1-h6的元素

 $(":header");

15.所有正在播放的动画元素

 $(":animated");

16.当前汇聚焦距属性

 $(":focus");

17.选择没有子元素或者子节点的div

  console.log( $("div:empty"));

18.选择有子元素的或者子节点的class是divs的元素

 console.log($(".divs:parent"));

19.div的后代元素中包含3子节点的元素,只能是内容不能是元素

 console.log($("div:contains(3)"));

20.查找包含选择器元素的容器

 console.log($(":has(.divs)"))
 console.log($(":has(#div0)"))
 console.log($("div").has("#div0"))

21.查找当前.divs元素的父容器

 console.log($(".divs").parent());

22.查找当前.divs元素的父元素到html之前的所有父容器

 console.log($(".divs").parentsUntil("html"));

23.隐藏的

 console.log($(":hidden"));
 所有不可见的元素,还包括display:none,像visibility: hidden和height:0都不属于隐藏的

24.所有可以显示的元素

 console.log($(":visible"));

25.该元素是父元素唯一子元素,独生子女

 console.log( $("div:only-child"));

26.该元素在它的父容器中的同种类型仅此一个

 console.log($("div:only-of-type"));

五.两个特殊方法

 is(),hasClass();
 他们都是返回一个布尔值,后面不能继续连缀

1.判断div列表中是否由.divs选择器的元素,有就返回true,没有就返回false

 console.log($("div").is(".divs"));
 console.log($("div").is("#div0"));

2.判断div列表中是否有class是divs的选择器,有就返回true 反之返false

 console.log($("div").hasClass("divs"));