CSS选择器

首先了解一下CSS选择器,CSS即层叠样式表他将网页结构和表现样式完全分离出来,利用CSS选择器可以轻松在不改变HTML结构的前提下改变样式。他是利用获取目标元素后施加样式,有三种方式:行间样式表、内部样式表、外部样式表。

选择器

语法

描述

示例

标签选择器

 E{

  样式

}

以标签作为选择符

td{

font-size:14px;

}

ID选择器

#ID{

样式

}

以文档元素的唯一ID作为选择符

#info{

font-size:14px;

}

类选择器

E.className{

}

.className{

}

以文档元素的class作为选择器符

div.info{

font-size:14px;

}

.info{

font-size:14px;

}

群组选择器

E1,E2,E3{

样式

}

多个选择符共用同样的样式

div,p,a{

font-size:14px;

}

后台选择器

E F{

样式

}

元素E的后代元素F作为选择符

#links a{

font-size:14px;

}

通配符选择器

*{

样式

}

以文档的所有元素作为选择符

*{

font-size:14px;

}

如果是内部样式表则将其放在HTML中的<style>标签内,如果是外部样式表则直接在外部css文件中编辑。

<style>
#info{
font-size:14px;
}
.demo{
font-size:13px;
}
</style>

jQuery选择器


jQuery选择器完全继承了CSS的风格,通过选择器轻松获取到DOM元素后,然后为其添加行为。


function click(){
    alert("success");
}
<p id="cl" οnclick='click()'>Click me</p>

$("#cl").click(function(){
    alert("click me!");
});




上面是分别利用js和jQuery完成的事件,可以看到jQuery可以有效的将js代码和HTML分离开来,只需要为标签添加ID属性。CSS选择器找到元素后是为其添加样式,而jQuery是为其添加行为,并且jQuery操作CSS比单纯CSS功能更加强大。

js获取页面元素,如果元素不存在则会报错,所以要对其进行检验。而jQuery中获取对象后,即使该元素不存在也不会抱错,使用js判断元素是否存在:

<script>
    if(document.getElementById("demo")){
     ...
    }
    //如果使用jQuery判断该元素是否存在
    if($("#demo").length>0){
      .....
    }
    //或者转化为DOM对象
    if($("#demo")[0]){
      ...
    }
</script>



jQuery选择器分类


jQuery选择器分为基本选择器、层次选择器、过滤选择器和表单选择器

基本选择器


选择器

描述

返回

示例

#id

根据指定的ID匹配元素

单个元素

$("#info")获取id为info的元素

.class

根据指定的类名匹配元素

集合元素

$(".info")获取class属性为info的元素

element

根据指定标签匹配元素

集合元素

$("p")选取所有p标签的元素


匹配所有元素

集合元素

$("p")选区所有元素

select1,select2....

匹配每一个指定的元素

集合元素

$("div,span,p.myClass")选区所有<div>元素、<span>元素、class为myClass的<p>元素


$("#demo").css("background","#ffffff")改变ID为demo的背景颜色。

$("p").css("background","#ffffff")改变所有p元素的背景颜色。

$(".demo").css("background","#ffffff")改变所有class为demo的背景颜色。

$("span,div.demo,#demo").css("background","#ffffff")改变所有span元素、div元素中class为demo、id为demo的元素背景颜色。

层次选择器


如果想要通过DOM元素间的层次关系获取元素,可以使用层次选择器。比如:后代元素、子元素、相邻元素和同辈元素等。


选择器

描述

返回

示例

$("sele1 sele2")

后代元素,获取sele1元素后的所有sele2元素

集合元素

$("div span")获取div元素内的span元素

$("parent > child")

子代元素,这个是获取parent子代元素,上面的那个是获取其下的所有元素。

集合元素

$("div > span")获取div元素下的<span>元素

$("selec1 + selec2")

相邻元素,选取selec1元素后的selec2元素

集合元素

$(".demo + div")选取class属性为demo的下一个<div>元素

$("sele1~sele2")

同代元素,选取sele1元素后的所有sele2元素

集合元素

$("#demo~div") 选取id为demo元素后的所有div元素


相邻元素选择器和同代元素选择器有更简单的替代


$(".demo + div") 相当于 $(".demo").next("div");


$("#demo ~ div")相当于$("#demo").nextAll("div");这个只能获取其后面的所有元素


$("#demo").siblings("div")无论前后都能获取。


过滤选择器


通过特定的过滤规则筛选所需的DOM元素。


选择器

描述

返回

示例

:first

获取第一个元素

单个元素

$("div:first")获取div元素中的第一个div元素

:last

获取最后一个元素

单个元素

$("div:last")获取div元素中的最后一个元素

:not(selector)

去除指定匹配的元素

集合元素

$("div:not(.demo)")选取div中class属性不是demo的元素

:even

选取索引是偶数的元素,索引从0开始

集合元素

$("input:even")选取input元素中索引是偶数的<input>元素

:odd

选取索引是奇数的元素,索引从0开始

集合元素

$("input:odd")选取input元素中索引是奇数的<input>元素

:eq(index)

选取索引等于index的元素

单个元素

$("input:eq(1)")选取input元素中索引等于1的<input>元素

:gt(index)

索引大于index元素

集合元素

$("div:gt(1)")选取div中索引大于index的元素

:lt(index)

索引小于index元素

集合元素

同上小于

:header

选取所有head元素

集合元素

$(":header")选取页面中所有标题元素

:animated

选取正在执行动画的所有元素

集合元素

$("div:animated")选取正在执行动画的<div>元素

:focus

选取当前聚焦点元素

单个元素

$(":focus")选取当前聚焦点元素


可见性过滤器:选取所有不可见元素 :hidden ,可见元素:visible。属性过滤器$("div[id]")选取div中含有id属性的元素,$("div[title=test]")选取属性tile为test的div元素,$("div[title!=test]")属性不为test的元素$("div[title^=test]")属性值以test开头,$("div[title$=value]")属性值以value结尾,$("div[title*=test]")属性值含有test,$(div[id][title=value])含有属性id并且含有属性title属性值为value的元素。另外后有自元素过滤器ntlochild()、first-child()、last-child()、only-child.


表单属性过滤器:$("#form1:enabled")id为form1的表单内所有可用元素$("$form2:disabled")id为form2的表单内所有不可用元素,$(input:checked)input元素被选中的元素,$(select option:selected)菜单被选中的元素。


表单选择器


选择器

描述

返回

示例

:input

选取所有<input>,<textarea>,<select><button>元素

集合元素

$(":input")

:text

选取所有单行文本框

集合元素

$(":text")

:password

选取所有密码框

集合元素

$(":password")

:radio

选取所有单选框

集合元素

$(":radio")

:checkbox

选取所有复选框

集合元素

$(":checkbox")

:submit

选取所有提交按钮

集合元素

$(":submit")

:reset

选取所有重置按钮

集合元素

$(":reset")

:button

选取所有按钮

集合元素

$("button")

:file

选取所有上传域

集合元素

$(":file")

:hidden

选取所有不可见元素

集合元素

$(":hidden")

:image

选取所有图像的按钮

集合元素

$(":image")