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的元素添加行为.