JQuery 选择器
- - CSDN博客Web前端推荐文章点击我
. 像上面这样把JavaSript代码和HTML代码混杂在一起的做法同样也非常不妥,因为它并没有将网页内容和行为分离,所以才有JQuery选择器的学习.点击我
. //给class为demo的元素添加行为.<script type="text/JavaScript">
function test(){
alert("JavaScript demo");
}
</script>
<p onclick="test();">点击我</p>
像上面这样把JavaSript代码和HTML代码混杂在一起的做法同样也非常不妥,因为它并没有将网页内容和行为分离,所以才有JQuery选择器的学习。
例:
<p class="demo">点击我</p>
<script type="text/JavaScript">
$(".demo").click(function(){ //给class为demo的元素添加行为
alert("demo的单击事件!");
})
</script>
JQuery中涉及操作CSS样式的部分比单纯的CSS功能更为强大,并且,拥有跨浏览器的兼容性。
JQuery 选择器的优点:
1、简洁的写法
$("#ID")用来代替document.getElementById("ID")函数,即通过ID获取元素。
$("TagName")用来代替document.getElementByTagName("TagName")函数,即通过标签名获取HTML元素。
2、支持css1到css3选择器
在JQuery中,开发人员可以放心地使用JQuery选择器而无需考虑浏览器是否支持这些选择器。
3、完善的处理机制
$("#tt").css("color","red"); 说明: f($("#tt")){
//do something
}而应该根据获取到元素的长度来判断,代码如下:
if($("#tt").length>0){
//do something
}//或者转化成DOM对象来判断 if($("#tt")[0]){
//do something
} <p>测试1</p>
<p>测试2</p>
实现步骤:
1)获取所有的<p>元素
2)对<p>元素进行循环(因为获取的是数组对象)
3)给每个<p>元素添加行为事件
JavaSript代码如下:
//获取网页中所有的p元素
var items = document.getElementByTagName("p");
for(var i = 0;i<=items.length;i++){
//由于获取的是数组对象,因此需要挨个把它循环出来
items[i].onclick = function(){ //给每个对象添加onclick事件
//do something
}
} HTML代码如下:
<table id="tb"> <tbody> <tr> <td>第一行</td> <td>第一行</td> </tr> <tr> <td>第二行</td> <td>第二行</td> </tr> <tr> <td>第三行</td> <td>第三行</td> </tr> <tr> <td>第四行</td> <td>第四行</td> </tr> <tr> <td>第五行</td> <td>第五行</td> </tr> <tr> <td>第六行</td> <td>第六行</td> </tr> </tbody> </table>
步骤实现如下:
1)根据表格id获取表格
2)在表格内获取<tbody>元素
3)在<tbody>元素下获取<tr>元素
4)循环输出获取的<tr>元素
5)对<tr>元素的索引值除以2并取模,然后根据奇偶设置不同的背景色。
JavaSript代码如下:
//获取id为tb的元素(table)
var item=document.getElementById("tb");
//获取表格第一个tbody元素
var tbody=document.getElementByTagName("tbody")[0];
//获取tbody元素下的所有tr元素
var trs = document.getElementByTagName("tr");
//循环trs元素
for(var i=0;i<trs.length;i++){
if(i%2==0){
//改变符合条件的tr元素的背景色
trs[i].style.backgroundColor="#888";
}
} HTML代码如下:
<input type="checkbox" value="1" name="check" checked/> <input type="checkbox" value="2" name="check"/> <input type="checkbox" value="3" name="check" checked/> <input type="button" value="你选中的个数" id="btn"/>
实现步骤:
1)新建一个空数组
2)获取所有name为"check"的多选框
3)循环判断多选框是否被选中,如果被选中则添加到数组里。
4)获取输出按钮,然后为按钮添加onclick事件,输出数组的长度即可。
JavaSript代码如下:
//获取id为btn的元素(button)
var btn = document.getElementById("btn");
//给元素添加onclick事件
btn.onclick = function(){
//创建一个数组对象
var arrays = new Array();
//获取name为check的一组元素(checkbox)
var items = document.getElementsByName("check");
//循环这组数据
for(i=0;i<items.length;i++){
//判断是否选中
if(items[i].checked){
//把符合条件的数据添加到数组中
arrays.push(items[i].value);
//push()是JavaScript数组中的方法
}
}
alert("选中的个数为:"+arrays.length);
}
上面的几个例子都是用传统的JavaSript方法进行操作,编写很枯燥名称也冗长,然而在JQuery中,类似的这些操作则是非常简洁。
使用JQuery选择器来实现上面的3个示例:
示例1:给页中的所有<p>元素添加onclick事件。
//获取页面中的所有<p>元素,给每一个<p>元素添加onclick事件
$("p").click(function(){
//doing something
}) 示例2:使一个特定的表格隔行变色。
$("#tb tbody tr:even").css("backgroundColor","#6699cc") 示例3:对多选框进行操作,输出选中的多选框的个数。
var length=$("input[name='check']:checked").length;
| 名称 | 说明 | 举例 |
| #id | 根据元素Id选择 | $("divId") 选择ID为divId的元素 |
| element | 根据元素的名称选择, | $("a") 选择所有<a>元素 |
| .class | 根据元素的css类选择 | $(".bgRed") 选择所用CSS类为bgRed的元素 |
| * | 选择所有元素 | $("*")选择页面所有元素 |
|
selector1, selector2, selectorN |
可以将几个选择器用","分隔开然后再拼成一个选择器字符串.会同时选中这几个选择器匹配的内容. | $("#divId, a, .bgRed") |
| 名称 | 说明 | 举例 |
| ancestor descendant | 使用"form input"的形式选中form中的所有input元素.即ancestor(祖先)为from, descendant(子孙)为input. | $(".bgRed div") 选择CSS类为bgRed的元素中的所有<div>元素. |
| parent > child | 选择parent的直接子节点child. child必须包含在parent中并且父类是parent元素. | $(".myList>li") 选择CSS类为myList元素中的直接子节点<li>对象. |
| prev + next | prev和next是两个同级别的元素. 选中在prev元素后面的next元素. | $("#hibiscus+img")选在id为hibiscus元素后面的img对象. |
| prev ~ siblings |
选择prev后面的根据siblings过滤的元素 注:siblings是过滤器 |
$("#someDiv~[title]")选择id为someDiv的对象后面所有带有title属性的元素 |
| 名称 | 说明 | 举例 |
| :first | 匹配找到的第一个元素 | 查找表格的第一行:$("tr:first") |
| :last | 匹配找到的最后一个元素 | 查找表格的最后一行:$("tr:last") |
| :not(selector) | 去除所有与给定选择器匹配的元素 | 查找所有未选中的 input 元素: $("input:not(:checked)") |
| :even | 匹配所有索引值为偶数的元素,从 0 开始计数 | 查找表格的1、3、5...行:$("tr:even") |
| :odd | 匹配所有索引值为奇数的元素,从 0 开始计数 | 查找表格的2、4、6行:$("tr:odd") |
| :eq(index) |
匹配一个给定索引值的元素 注:index从 0 开始计数 |
查找第二行:$("tr:eq(1)") |
| :gt(index) |
匹配所有大于给定索引值的元素 注:index从 0 开始计数 |
查找第二第三行,即索引值是1和2,也就是比0大:$("tr:gt(0)") |
| :lt(index) |
选择结果集中索引小于 N 的 elements 注:index从 0 开始计数 |
查找第一第二行,即索引值是0和1,也就是比2小:$("tr:lt(2)") |
| :header | 选择所有h1,h2,h3一类的header标签. | 给页面内所有标题加上背景色: $(":header").css("background", "#EEE"); |
| :animated | 匹配所有正在执行动画效果的元素 |
只有对不在执行动画效果的元素执行一个动画特效:
$("#run").click(function(){ |
| 名称 | 说明 | 举例 |
| :contains(text) | 匹配包含给定文本的元素 | 查找所有包含 "John" 的 div 元素:$("div:contains('John')") |
| :empty | 匹配所有不包含子元素或者文本的空元素 | 查找所有不包含子元素或者文本的空元素:$("td:empty") |
| :has(selector) | 匹配含有选择器所匹配的元素的元素 | 给所有包含 p 元素的 div 元素添加一个 text 类: $("div:has(p)").addClass("test"); |
| :parent | 匹配含有子元素或者文本的元素 | 查找所有含有子元素或者文本的 td 元素:$("td:parent") |
| 名称 | 说明 | 举例 |
|
匹配所有的不可见元素 注:在1.3.2版本中, hidden匹配自身或者父类在文档中不占用空间的元素.如果使用CSS visibility属性让其不显示但是占位,则不输入hidden. |
查找所有不可见的 tr 元素:$("tr:hidden") | |
| :visible | 匹配所有的可见元素 | 查找所有可见的 tr 元素:$("tr:visible") |
| 名称 | 说明 | 举例 |
| [attribute] | 匹配包含给定属性的元素 |
查找所有含有 id 属性的 div 元素: $("div[id]") |
| [attribute=value] | 匹配给定的属性是某个特定值的元素 |
查找所有 name 属性是 newsletter 的 input 元素: $("input[name='newsletter']").attr("checked", true); |
| [attribute!=value] | 匹配给定的属性是不包含某个特定值的元素 |
查找所有 name 属性不是 newsletter 的 input 元素: $("input[name!='newsletter']").attr("checked", true); |
| [attribute^=value] | 匹配给定的属性是以某些值开始的元素 | $("input[name^='news']") |
| [attribute$=value] | 匹配给定的属性是以某些值结尾的元素 |
查找所有 name 以 'letter' 结尾的 input 元素: $("input[name$='letter']") |
| [attribute*=value] |
匹配给定的属性是以包含某些值的元素 |
查找所有 name 包含 'man' 的 input 元素: |
| [attributeFilter1][attributeFilter2][attributeFilterN] | 复合属性选择器,需要同时满足多个条件时使用。 |
找到所有含有 id 属性,并且它的 name 属性是以 man 结尾的: $("input[id][name$='man']") |
| 名称 | 说明 | 举例 |
| :nth-child(index/even/odd/equation) |
匹配其父元素下的第N个子或奇偶元素 ':eq(index)' 只匹配一个元素,而这个将为每一个父元素匹配子元素。:nth-child从1开始的,而:eq()是从0算起的!
可以使用: |
在每个 ul 查找第 2 个li: $("ul li:nth-child(2)") |
| :first-child |
匹配第一个子元素 ':first' 只匹配一个元素,而此选择符将为每个父元素匹配一个子元素 |
在每个 ul 中查找第一个 li: $("ul li:first-child") |
| :last-child |
匹配最后一个子元素 ':last'只匹配一个元素,而此选择符将为每个父元素匹配一个子元素 |
在每个 ul 中查找最后一个 li: $("ul li:last-child") |
| :only-child |
如果某个元素是父元素中唯一的子元素,那将会被匹配 如果父元素中含有其他元素,那将不会被匹配。 |
在 ul 中查找是唯一子元素的 li: $("ul li:only-child") |
| 名称 | 说明 | 解释 |
| :input | 匹配所有 input, textarea, select 和 button 元素 |
查找所有的input元素: $(":input") |
| :text | 匹配所有的文本框 |
查找所有文本框: $(":text") |
| :password | 匹配所有密码框 |
查找所有密码框: $(":password") |
| :radio | 匹配所有单选按钮 | 查找所有单选按钮 |
| :checkbox | 匹配所有复选框 |
查找所有复选框: $(":checkbox") |
| :submit | 匹配所有提交按钮 |
查找所有提交按钮: $(":submit") |
| :image |
匹配所有图像域 |
匹配所有图像域: $(":image") |
| :reset | 匹配所有重置按钮 |
查找所有重置按钮: $(":reset") |
| :button | 匹配所有按钮 |
查找所有按钮: $(":button") |
| :file | 匹配所有文件域 |
查找所有文件域: $(":file") |
| 名称 | 说明 | 解释 |
| :enabled |
匹配所有可用元素 |
查找所有可用的input元素: $("input:enabled") |
| :disabled | 匹配所有不可用元素 |
查找所有不可用的input元素: $("input:disabled") |
| :checked | 匹配所有选中的被选中元素(复选框、单选框等,不包括select中的option) |
查找所有选中的复选框元素: $("input:checked") |
| :selected | 匹配所有选中的option元素 |
查找所有选中的选项元素: $("select option:selected") |
点击我
. 像上面这样把JavaSript代码和HTML代码混杂在一起的做法同样也非常不妥,因为它并没有将网页内容和行为分离,所以才有JQuery选择器的学习.点击我
. //给class为demo的元素添加行为.