jQuery选择器整理
以下是自己在学习jQuery时做的笔记,分享出来
id选择器
例子:$("#id")
id是唯一的,每个id值在一个页面中只能使用一次。如果多个元素分配了相同的id,将只匹配该id选择集合的第一个DOM元素。但这种行为不应该发生;有超过一个元素的页面使用相同的id是无效的
类选择器
类选择器,相对id选择器来说,效率相对会低一点,但是优势就是可以多选
例子:$(".className")
jQuery除了选择上的简单,而且没有再次使用循环处理,如果用js方法的话会得到一个类数组,需要循环来获得所有元素
元素选择器
例子: $("element")
同样的效果,$("p")选取所有的元素,通过css方法直接赋予样式同样也不需要循环处理就可以获得所有p元素
全选择器
例子:$("*")
选择所有的元素,如果用原生js,会碰到一些兼容问题
层级选择器
$("parent>child") 子选择器,选择所有指定parent元素中指定的child直接子元素
例子:$("div>p") 表示选择div元素下所有的是p的直接子元素$("div p") 后代选择器,表示选择了div元素下的所有p元素
$("div+p") 相邻兄弟选择器,选择紧接在div元素后的兄弟元素中的p元素,是紧接着的兄弟元素
$("div~p") 一般兄弟选择器,选择div元素后的所有兄弟元素中的p元素
基本筛选选择器
$(".div:first") 选择所以类名为div元素中的第一个元素
$(".div:last") 选择所以类名为div元素中的最后一个元素
$(".div:even") 选择所以类名为div元素中索引值为偶数的元素(索引值从0开始)
$(".div:odd");选择所以类名为div元素中索引值为奇数的元素(索引值从0开始)
$(".aaron:eq(1)") 选择所有类名为aaron的元素中索引值等于1的元素(索引从0开始)
$(".aaron:gt(1)") 选择所有类名为aaron的元素中索引值大于1的元素
$(".aaron:lt(1)") 选择所有类名为aaron的元素中索引值小于1的元素
$("input:not(:checked)+p") 选择在所有input元素中没有checked属性的input元素
$(":header") 选择所有标题元素,比如h1,h2
$(":animated") 选择所有正在执行动画效果的元素
内容筛选选择器(通过内容来进行过滤)
$(".div:contains(指定文本)");选择所有类名为div的元素中包含‘指定文本“的元素
注意:不是完全匹配,且是指定的文本,即元素中如果包含:contains ,然后我查找contains 也会找出对应的元素
$(":has(selector)")选择所有元素包含指定元素的元素
例子:$(".div:has(span)"); 选择所有类名为div的元素中包含span元素的元素
注意:has查找包含“指定元素”的元素,是指定元素不是文本,和contains不一样
$("a:parent");选择了所有包含了子元素或者文本元素的a元素 (包含文本节点和元素)
$("a:empty");选择了所有没有包含子元素的a元素(包含文本节点和元素)
注意::contains与:has都有查找的意思,但是contains查找包含“指定文本”的元素,has查找包含“指定元素”的元素如果:contains匹配的文本包含在元素的子元素中,同样认为是符合条件的。:parent与:empty是相反的,两者所涉及的子元素,包括文本节点
可见性筛选选择器(通过元素显示/隐藏状态来选择)
元素有显示状态与隐藏状态,jQuery根据元素的状态扩展了可见性筛选选择器:visible与:hidden
我们有几种方式可以隐藏一个元素:CSS display的值是none。type="hidden"的表单元素。宽度和高度都显式设置为0。一个祖先元素是隐藏的,该元素是不会在页面上显示。CSS visibility的值是hidden。CSS opacity的值是0如果一个元素占据文档一定空间,元素被认为是可见的,可见元素宽度高度,都大于0
$("#div:visible"); 选择所有id是div的显示的元素
$("$div:hidden") 选择所有id是div的隐藏的元素
其中注意:在jq中,元素的visibility: hidden 或 opacity: 0被认为是可见的,因为他们仍然占用空间布局。不在文档中的元素被认为不可见
属性筛选选择器(基于属性来定位一个元素
$("div[name='p1']")在所有div元素中选择属性name=p1的元素
$("div[p2]"); 在所有div元素中选择具有属性p2的div元素
$("div[name|='-']"); 在所有div元素中选择属性name的值包含给定字符串“-”的元素
$("div[name~='a']"); 在所有div元素中选择有属性name的值且该值包含连字符空和一个给定字符串的元素
$("div[name^='imooc']"); 在所有div元素中选择有属性name且name的值以imooc开头的元素$("div[name$='imooc']"); 在所有div元素中选择具有属性name,且name的值以imooc结尾的元素
$("div[name*='test']"); 在所有div元素中该选择具有属性name,且name的值包含一个字符串test的元素
$("div[name!='test']"); 在所有div元素中选择不存在指定属性或者指定属性的值不等于test的元素
$("div[name][test]");在所有div元素中选择具有属性name且同时又有test的div元素
同时还可以这样:$("div[name][id=‘put']"); 选择所有div元素中具有name 属性且id属性值为put的div元素
子元素筛选选择器
$(".first-div a:first-child"); 选择所有类名为first-div 下的所有a元素,如果a元素是其父元素的第一个元素,则会被选中
通用写法:$(":first-child")
$(".first-div a:last-child"); 选择所有类名为first-div下的所有a元素,如果a元素是其父元素的最后一个元素,则会被选中
请注意:如果a元素的父元素只有1个a元素,则first-child和last-child选中的元素是一样的
$(".first-div a:only-child"); 选中所有类名为first-div下的所有a元素,如果a元素是其父元素唯一的子元素,则会被选中
$(".last-div a:nth-child(2)");选中所有类名为first-div下的所有a元素,如果a元素是其父元素的第2个子元素,则会被选中
$(".last-div a:nth-last-child(2)");选中所有类名为first-div下的所有a元素,如果a元素是其父元素的倒数第2个子元素则会被选中
请注意:nth-child(n) n是从1开始计数的,而eq(index)是从0开始计算的
表单元素选择器
大部分表单类别筛选器可以使用属性筛选器替换,因为每个表单元素都有一个type值,可以通过[type="value"]进行筛选
$(":input");查找所有 input, textarea, select 和 button 元素,该选择器就是选中所有表单控件$("input:text"); 查找所有input元素中type值等于text的元素
$("input:password");查找所有input元素中type值等于password的元素
$("input:radio"); 匹配所有input元素中的单选按钮
$("input:checkbox");匹配所有input元素中的复选按钮
$("input:submit"); 匹配所有input元素中的提交的按钮
$("input:image"); 匹配所有input元素中的图像类型的元素
$("input:reset");匹配所有input元素中的重置按钮的元素
$("input:button");匹配所有input元素中类型为按钮的元素
$("input:file");匹配所有input元素中类型为file的元素
表单对象属性筛选选择器(4种)
$("input:enabled"); 查找所有input所有可用的(未被禁用的元素)input元素。
$("input:disabled"); 查找所有input所有不可用的(被禁用的元素)input元素。$("input:checked"); 查找所有input中被勾选的元素(主要单选框,复选框radio,checkbox) ,即被选中的元素$("option:selected"); 查找所有select元素下的option元素中且被勾选的元素,即查找所有option元素中,有selected属性被选中的选项