jQuery选择器种类由于经常使用jQuery,但是其中的很多选择器又不太能够熟练记牢使用,所以趁着上周有人分享,我再仔细的把jQuery的选择器过一遍,争取一次拿下,以后做到运用自如。
jQuery选择器主要来分可以分为三种:(1)基本选择器(2)层次选择器(3)过滤选择器(4) 表单选择器1、基本选择器基本选择器主要就是比较常见和常用的集中,是必须要掌握的。
#ID id选择器返回一个对象$("#div").class类选择器返回集合$(".content")Element 标签选择器返回集合$("input")* 匹配所有元素返回集合$("*")selector1,selector2,selector3,....合并每个选择器匹配的元素,返回集合$("#div,.class,input")2、层次选择器(主要是选择层次下面的元素)$("E F") 选择E元素中的所有F后代元素(注意:是子孙元素) 返回集合$("P>C") 选择P元素下的C子元素(注意:是子元素)返回集合$("P+N") 选择P元素后的相邻元素(即下一个兄弟元素),和$("P").next("N")方法执行效果相同$("P~S") 选择P元素之后的所有S兄弟元素,和$("P").nextAll("S")方法执行效果相同,<SPAN style="COLOR: #ff0000">另pre()方法和next()方法相对。
</SPAN>preAll()和nextAll()相对。
注意siblings()方法和nextAll()方法的区别:siblings()是所有前后的兄弟元素,nextAll()是所有后面的兄弟元素第三和第四个选择器常常用后面的写法代替3、过滤选择器(主要是按照后面的过滤条件取出前面的元素)通过特定的过滤规则筛选DOM元素格式::过滤规则(以冒号作为过滤条件)分类:基本过滤,内容过滤,可见性过滤,属性过滤,子元素过滤和表单对象过滤器(1)基本过滤器:first 选取第一个元素,$("div:first"):last 选择最后一个元素,$("div:last"):not(selector) 除了和选择器匹配元素之外的所有元素,$("input:not(.mytext)"):even 索引是偶数的所有元素,$("tr:even"):odd 索引是奇数的所有元素,$("tr:odd"):eq(index),:gt(index),lt(index) 分别选择索引等于,大于和小于index的元素:header 选择所有的标题元素,$(":header")如h1,h2,h3...:animated 选择当前执行动画的元素,$("div:animated")(2)内容选择器:contains(text) 文本内容为text的元素,$("div:contains('Hello')"):empty 不包含子元素和文本内容的空元素:has(selector) 包含有匹配选择器的元素为子元素的元素,$("div:has(p)"):parent 选择包含的子元素或者文本内容的元素(3)可见性过滤器:hidden 选择不可见的元素,$("div:hidden"):visible 选择可见的元素,$("input:visible")在可见性选择器中,需要注意选择器:hidden,它不仅包括样式属性display为"none"的元素,也包括文本隐藏域(<input type="hidden"/>)和visibility:hidden之类的元素。
.show(3000) .hide(1000(4)属性过滤器通过元素的属性或者属性值选择元素[attri] 选择拥有此属性的元素,$("div[id]")[attri=value] 选择属性的值等于value的元素[attri!=value] 属性的值不等于value的元素[attri^=value] 属性的值以value开头的元素[attri$=value] 属性的值以value结尾的元素[attri*=value] 属性的值中含有value的元素[selector1][selector2]…合并多个属性过滤器的结果(5)子元素过滤器(是选择子类元素的):first-child 选择每个父元素的第一个子元素,$("ul li:first-child"):last-child 选择每个父元素的最后一个子元素:only-child 选择是父元素的唯一子元素:nth-child(even) 选择每个父元素中索引是偶数的子元素:nth-child(odd) 选择每个父元素中索引是奇数的子元素:nth-child(index) 选择每个父元素中索引等于index的子元素,index有倍数形式,如3n,表示所有3的倍数,n=0,1,2…(6)表单对象属性过滤选择器:enabled 选择所有可用的表单元素,$("#form1 :enabled"):disabled:checked 选择所有被选中的单选按钮和复选框元素:selected 选择所有下拉列表中被选中的选项元素4、表单选择器:input 选择所有表单元素,包括<input><textarea><select><button>等元素:text 选择所有文本框,$("#form1:text"):password 选择所有密码文本框:radio 选择所有单选按钮:checkbox 选择所有复选框:submit :reset :button:image :file :hidden需要特别注意的是后迭代选择器和过滤选择器的不同:例如:<div class="test"><div style="display:none;">aa</div><div style="display:none;">bb</div><div style="display:none;">cc</div><div class="test" style="display:none;">dd</div></div><div class="test" style="display:none;">ee</div><div class="test" style="display:none;">ff</div>使用如下的jQuery选择器分别获取他们。
var $t_a = $('.test :hidden'); //带空格的JQuery选择器(后迭代选择器,选取的是class为"test"的元素里面的隐藏元素)var $t_b = $('.test:hidden'); //不带空格的jQuery选择器(过滤选择器,选取隐藏的class为"test"的元素)var len_a = $t_a.length;var len_b = $t_b.length;alert("$('.test :hidden') = " + len_a); //输出4alert("$('.test:hidden') = " + len_b); //输出3几个常用的jQuery的方法如下:show():显示隐藏的匹配元素。
css(name,value):给元素设置样式。
text(string):设置所有匹配元素的文本内容。
filter(expr):筛选出与指定表达式匹配的元素集合,其中expr可以是多个选择器的组合。
addClass(class),removeClass(class):为匹配的元素添加指定的类名。
toggle():交替执行方法。
下面是一个比较经典的例子:<html><head><title>jQuery test</title><script type="text/javascript" src="js/jquery-1.6.2.min.js"></script><script type="text/javascript">$(function(){//alert("shit it");var $category = $('ul li:gt(5):not(:last)');$category.hide();var $toggleBtn = $('div.showmore > a');/*$toggleBtn.click(function(){if($category.is(":visible")){$category.hide(); //隐藏$('.showmore a span').css("background","url(img/down.jpg) no-repeat 0 0").text("显示全部品牌");$('ul li a').removeClass("promoted");}else{$category.show(); //显示全部品牌$('.showmore a span').css("background","url(img/up1.jpg) no-repeat 0 0").text("精简显示品牌");$('ul li a').filter(":contains('佳能'),:contains('尼康'),:contains('奥林巴斯')").addClass("promoted");}return false; //超链接不跳转});*/$toggleBtn.toggle(function(){$category.show(); //显示全部品牌$('.showmore a span').css("background","url(img/up1.jpg) no-repeat 0 0").text("精简显示品牌");$('ul li a').filter(":contains('佳能'),:contains('尼康'),:contains('奥林巴斯')").addClass("promoted");return false; //超链接不跳转},function(){$category.hide(); //隐藏$('.showmore a span').css("background","url(img/down.jpg) no-repeat 0 0").text("显示全部品牌");$('ul li a').removeClass("promoted");return false; //超链接不跳转});});</script><style type="text/css">.promoted {font-family: "Courier New", Courier, monospace;color:#F00;font-size: 20px;white-space: pre;}</style></head><body><div class="SubCategoryBox"><ul><li><a href="#">佳能</a><i>(27113)</i></li><li><a href="#">索尼</a><i>(1256)</i></li><li><a href="#">三星</a><i>(33556)</i></li><li><a href="#">苹果</a><i>(1024581)</i></li><li><a href="#">柯达</a><i>(1250)</i></li><li><a href="#">卡西欧</a><i>(5456)</i></li><li><a href="#">富士</a><i>(2458)</i></li><li><a href="#">宾得</a><i>(8754)</i></li><li><a href="#">理光</a><i>(2424)</i></li><li><a href="#">奥林巴斯</a><i>(87855)</i></li><li><a href="#">明基</a><i>(4424)</i></li><li><a href="#">爱国者</a><i>(57857)</i></li><li><a href="#">尼康</a><i>(2454)</i></li><li><a href="#">松下</a><i>(5784)</i></li><li><a href="#">其他品牌相机</a><i>(74548)</i></li></ul><div class="showmore"><a href="" target="_blank"><span>show all brands</span></a></div></div></body></html>。