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")方法执行效果相同,另pre()方法和next()方法相对。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); //输出 4
alert("$('.test:hidden') = " + len_b); //输出 3


下面是一个比较经典的例子:


<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="http://www.baidu.com" target="_blank"><span>show all brands</span></a>
	</div>
</div>
</body>
</html>


几个常用的jQuery的方法如下:

show(): 显示隐藏的匹配元素。

css(name,value):给元素设置样式。

text(string):设置所有匹配元素的文本内容。

filter(expr):筛选出与指定表达式匹配的元素集合,其中expr可以是多个选择器的组合。

addClass(class),removeClass(class):为匹配的元素添加指定的类名。

toggle():交替执行方法。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值