jQuery 筛选
筛选(查找/树遍历)
| 名称 | 说明 | |
| children([selector ]) | 选取子元素(用的多) | Selector 一个字符串,用于匹配元素的选择器表达式字符串。 |
| parent() | 选取父元素(用的多) | |
| parents() | 选取祖先元素(用的多) | |
| parentsUntil() | 所有父元素,直到遇到匹配的那个元素为止1.6+ | |
| offseParent() | 返回父元素中第一个其position设为relative或absolute的元素,仅对可见元素有效果 | |
| next() | 选择后面紧邻的兄弟元素 | |
| nextAll() | 查找当前元素之后所有的同辈元素 | |
| nextUntil() | 所有的同辈元素,直到遇到匹配的那个元素为止 1.6+ | |
| prev() | 前一个兄弟元素 | |
| prevAll() | 前面所有的兄弟元素 | |
| prevUntil() | 所有的兄弟元素,直到遇到匹配的那个元素为止 1.6+ | |
| siblings() | 前后所有兄弟元素 | |
| closest() | 从元素本身开始,DOM数上逐级向上级元素匹配,并返回最先匹配的祖先元素 | |
| addBack() | 添加堆栈中元素集合到当前集合,一个选择性的过滤选择器 | |
| closest() | 从元素本身开始,DOM数上逐级向上级元素匹配,并返回最先匹配的祖先元素 | |
| find() |
children() 选取子元素
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>children()</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
#outer{margin-bottom:30px;}
</style>
</head>
<body>
<div id="outer">
<div id="wrap">
<p>01 p标签</p>
<p>02 p标签</p>
<p id="third">03 p标签</p>
<div>div标签</div>
</div>
</div>
<div>
<span>Hello</span>
<p>Hello Again</p>
<div>And Again</div>
<p>And One Last Time</p>
</div>
<script>
//.find()和.children()方法是相似的,但.children()只是针对向下一个级别的DOM树。
//#wrap下的子元素(div,p),添加yellow背景
$('#wrap').children().css('background' ,'yellow');
//#wrap下子元素p
//$('#wrap').children('p').css('background' ,'yellow');
//含有.second样式的子元素
//$('#wrap').children('.second').css('background' ,'yellow');
//含有#third ID的子元素
//$('#wrap').children('#third').css('background' ,'orange');
//查找含有.selected的子元素
$("div").children(".selected").css("color", "blue");
</script>
</body>
</html>parent() 选取父元素
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>02 parent()</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
#outer ,#wrap{margin: 10px;}
</style>
</head>
<body>
<!-- deom 01 -->
<div id="outer">
<div id="wrap">
<p>01 p标签</p>
<p>02 p标签</p>
<p id="third">03 p标签</p>
<div>div标签</div>
</div>
</div>
<!-- deom 02 -->
<div><p>Hello</p></div>
<div class="selected"><p>Hello Again</p></div>
<script>
//查找父元素,只查找上一层
//#wrap被选中
$('#third').parent().css('border' ,'6px solid yellow');
//外层.outer被选中
$('#wrap').parent().css('border' ,'3px solid red');
//dome 02
//最下面的div被选中
$('p').parent('.selected').css('background' ,'yellow');
</script>
</body>
</html>parents() 选取祖先元素
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>parents()</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
#outer ,#wrap{margin: 10px;}
</style>
</head>
<body>
<!--
parents()与parentsUntil()是等价的
-->
<div id="outer">
<div id="wrap">
<p>01 p标签</p>
<p>02 p标签</p>
<p id="third">03 p标签</p>
<div>div标签</div>
</div>
</div>
<span></span>
<script>
//parents()寻找祖先元素
//选中#wrap,#outer,并在DOM树中向上遍历,直到<html>元素
//$('#third').parents().css('border' ,'1px solid red');
//parents('#wrap')等价与parent()
//$('#third').parents('#wrap').css('border' ,'3px solid yellow');
//选中#outer
//$('#third').parents('#outer').css('border' ,'3px solid red');
//查找每个p标签的所有父元素。
var parentEls = $("p").parentsUntil()
.map(function () {
return this.tagName;
})
.get().join(", ");
$("span").append(parentEls);
</script>
</body>
</html>offsetParent()
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>offseParent()</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
#outer ,#wrap{margin: 10px;height: 100px;width:100px;}
ul{margin-top:60px;}
</style>
</head>
<body>
<!--
offseParent()
取得离指定元素最近的含有定位信息的祖先元素。
含有定位信息的元素指的是,CSS 的 position 属性是 relative, absolute, 或 fixed 的元素。
-->
<div id="outer" style="position: relative;background:yellow;">#outer
<div id="wrap" style="position: absolute; top: 30px; left: 30px;background: gray;">#wrap
<p>01 p标签</p>
<p>02 p标签</p>
<p id="third">03 p标签</p>
<div>div标签</div>
</div>
</div>
<button>button</button>
<ul>
<li>I</li>
<li style="position: relative;">II
<ul>
<li>A</li>
<li>B
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</li>
<li>C</li>
</ul>
</li>
<li>III</li>
</ul>
<script>
//直接把样式添加在最近一个含有position属性是relative, absolute, 或fixed的父元素上
$('button').click(function(){
$('p').offsetParent().css('background','orange');
});
$('li.item-a').offsetParent().css('background-color', 'red');
</script>
</body>
</html>next()
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>next()</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
div,p{height: 100px;width: 100px;border: 1px solid #ddd;float: left;margin-right:10px; }
</style>
</head>
<body>
<!-- 例子 01:-->
<p>01 p标签</p>
<p>02 p标签</p>
<div>03 div标签</div>
<p>04 p标签</p>
<p>05 p标签</p>
<p>06 p标签</p>
<span style="display:block;clear:both;height: 60px;"><!-- 清除浮动 --></span>
<!-- 例子 02:-->
<button disabled="disabled">First</button> - <span></span><br/>
<button>Second</button> - <span></span></div><br/>
<button disabled="disabled">Third</button> - <span></span>
<script>
//选中紧邻的兄弟元素div标签
$('p.second').next().css('background' ,'yellow');
//例子 2
$('button').not('button[disabled]').click(function(){
$("button[disabled]").next().text("this button is disabled");
}).css('color' ,'red');//选中的button添加css,证明是被选中
</script>
</body>
</html>nextAll()
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>nextAll()</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
div,p{height: 100px;width: 100px;border: 1px solid #ddd;float: left;margin-right:10px; }
</style>
</head>
<body>
<!--
nextAll()与nextUntil()一样
-->
<div>00 div标签</div>
<p>01 p标签</p>
<p>02 p标签</p>
<div>03 div标签</div>
<p>04 p标签</p>
<div>05 div标签</div>
<p>06 p标签</p>
<script>
//.second之后所有的兄弟元素
$('p.second').nextAll().css('background' ,'yellow');
//next()返回一个元素,给参数也没用
//nextAll()返回一个元素集合
//选中.second后所有的div元素
$('p.second').nextAll('div').css('border' ,'6px solid red');
//选中.second后所有的p元素
$('p.second').nextAll('p').css('border' ,'6px solid orange');
//查找 body 中第二个孩子元素后面的所有段落,并为它们添加样式。
$(":nth-child(1)").nextAll("p").css({'color':'green' ,'font-size':'24px'});
</script>
</body>
</html>prev()
prevAll()
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>prev(),prevAll(),prevUntil()</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
div,p{height: 100px;width: 100px;border: 1px solid #ddd;float: left;margin-right:10px; }
</style>
</head>
<body>
<p>01 p标签</p>
<p>02 p标签</p>
<div>03 div标签</div>
<p>04 p标签</p>
<div>05 div标签</div>
<p>06 p标签</p>
<p>07 p标签</p>
<script>
//
$('.fifth').prev().css('border' ,'6px solid orange');
$('.fifth').prevAll().css('background','yellow');
$('.fifth').prevAll('div').css({'color':'red','font-size':'24px'});
//Locate all the p preceding the last p and give them a class.
$('p:last').prevAll('p').css('color' ,'blue');
</script>
</body>
</html>prve(),next()小项目练习
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>点击左右跳的圆</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;font-size: 16px;}
div,p{height: 100px;line-height:100px;width: 100px;border: 1px solid #ddd;float: left;margin-right:10px;border-radius:50px; text-align:content;}
button{height: 30px;line-height: 30px;width:60px;text-align:content;margin:10px;border-radius:20px;}
</style>
</head>
<body>
<div>00 div标签</div>
<p>01 p标签</p>
<p>02 p标签</p>
<div>03 div标签</div>
<p>04 p标签</p>
<div>05 div标签</div>
<p>06 p标签</p>
<span style="clear:both;height: 60px;display:block;"></span>
<button id="prev">prev</button><button id="next">next</button>
<script>
var curr = $('p:last');
curr.css('background' ,'yellow');
$('#prev').click(function(){
/*
//我这个有点乱
curr = curr.prev();//上一个元素
curr.css('background' ,'');//清空上一个元素
curr.css('background' ,'yellow');//给当前元素增加样式,
curr.nextAll(curr).css('background' ,'');//情况当前元素之后的样式
*/
//这个简洁
curr = curr.prev();
$("div ,p").css("background", "");
curr.css("background", "yellow");
});
$('#next').click(function(index){
//到这没停下来,往后继续走了,问题今后学更多的语法在解决
curr = curr.next();
$("div ,p").css("background", "");
curr.css("background", "yellow");
});
</script>
</body>
</html>siblings()
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>siblings()</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
div,p{height: 100px;width: 100px;border: 1px solid #ddd;float: left;margin-right:10px; }
</style>
</head>
<body>
<p>01 p标签</p>
<p>02 p标签</p>
<div>03 div标签</div>
<p>04 p标签class="fourth"</p>
<div>05 div标签</div>
<p>06 p标签</p>
<script>
$('.fourth').siblings().css('background' ,'yellow');
//返回一组元素的都可以加参数
//div元素描红色边框
$('.fourth').siblings('div').css('border' ,'3px solid red');
//p元素描绿色边框
$('.fourth').siblings('p').css('border' ,'3px solid pink');
</script>
</body>
</html>addBack()
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>addBack()</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<styletype="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
div,p{height: 100px;width: 100px;border: 1px solid #ddd;float: left;margin-right:10px; }
</style>
</head>
<body>
<p>01 p标签</p>
<p>02 p标签class="second"</p>
<div>03 div标签</div>
<p>04 p标签</p>
<div>05 div标签</div>
<p>06 p标签</p>
<script>
//选择.second之后的所有兄弟元素
//$('.second').nextAll().css('background' ,'yellow');
//nextAll()包括.second自己与后边的兄弟元素
$('.second').nextAll().addBack().css('background' ,'yellow');
</script>
</body>
</html><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>addBack()</title>
<style>
p, div { margin:5px; padding:5px; }
.left, .right { width: 45%; float: left;}
</style>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
</head>
<body>
<div class="left">
<p>left</p>
<div class="before-addback">
<p>First</p>
<p>Second</p>
</div>
</div>
<div class="right">
<p>right</p>
<div class="after-addback">
<p>First</p>
<p>Second</p>
</div>
</div>
<script>
//left ,rigth两组div内子div元素、孙p元素描边
$("div.left, div.right").find('div ,div > p').css("border" ,'solid 1px orange');
//First Example
//没有addback方法的,仅填充了孙元素p标签黄色背景
$("div.before-addback").find("p").css("background" ,'yellow');
//Second Example
//有addback方法的,子元素div也填充的黄色背景
$("div.after-addback").find("p").addBack().css("background" ,'yellow');
</script>
</body>
</html>find()
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>find()</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
</style>
</head>
<body>
<div>
<p>Success is going</p>
<p>from failurc to failure</p>
<p>without losing enthusiasm</p>
<p>成功是经历一次次失败,<span>却不丧失热情</span></p>
<p>2018 4 11 19:54</p>
<p>The distance between your</p>
<p><span>derams and reality</span></p>
<p>is called action</p>
<p><EM>你梦想和现实之间的距离被称为行动</EM></p>
<p>2018 4 12 19:38 </p>
</div>
<script>
/***
.find()方法允许我们能够通过查找DOM树中的这些元素的后代元素,匹配的元素将构造一个新的jQuery对象。
.find()和.children()方法是相似的,但后者只是再DOM树中向下遍历一个层级(.children()只查找子元素,而不是后代元素)
***/
//开始搜所有后代的span元素,和$("div span")一样
$('div').find('span').css('background' ,'yellow');
$('div').find($('em')).css('background' ,'orange');
$('div').find("span:contains('derams')").css('color' ,'red');
</script>
</body>
</html>筛选(各种遍历/串联)
| 名称 | 说明 | |
| add() | ||
| each() | 遍历一个jquery对象,为每个匹配元素执行一个函 | |
| contents() | 元素的子元素,包括文字和注视节点 | |
| end() | 终止在当前链的最新过滤操作,并返回匹配的元素的以前状态数 |
each()
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>each()</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
</style>
</head>
<body>
<div>Click here</div>
<div>to iterate through</div>
<div>these divs.</div>
<span style="display: block;clear: both;height: 30px;"></span>
<form action="">
<input type="text" id="" name="" value="姓名"/>
<input type="text" id="" name="" value="性别"/>
<input type="text" id="" name="" value="年龄"/>
<input type="text" id="" name="" value="收入"/>
<input type="text" id="" name="" value="职业"/>
</form>
<script>
/*
分别取值的时候,我们用到each()是在jquery对象上取值
用的不是非常多
后面ajax用$.each不是jquery对象上的each
$.each高效很多
*/
$('input').each(function(){
alert($(this).val());
});
/*
遍历一个jQuery对象,为每个匹配元素执行一个函数。
.each()方法用来让DOM循环结构更简单更不易出错。
它会迭代jQuery对象中的每一个DOM元素。
每次回调函数执行时,会传递当前循环次数作为参数(从0开始计数)。
更重要的是,回调函数是在当前DOM元素为上下文的语境中触发的。
因此关键字 this 总是指向这个元素。
*/
//下面两种方法,分别为div添加了样式
$("div").each(function(index) {
$(this).css({'height':'100px' ,'width':'100px' ,'border':'1px solid #ddd','float':'left' ,'margin-right':'10px'});
console.log(index +'='+ $(this).text());
});
$('div').css('background' ,'yellow');
</script>
</body>
</html>end()
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>end()</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
p{margin-bottom:30px;}
</style>
</head>
<body>
<p>
<span>Live beautifully,dream passionately,love completely</span>
生活的美好,梦要梦得热烈,爱要爱的完整.
</p>
<ul>
<li>list item 1</li>
<li>list item 2</li>
<li>list item 3</li>
</ul>
<ul>
<li>list item 1</li>
<li>list item 2</li>
<li>list item 3</li>
</ul>
<script>
/**
今天是2018年4月14日
1:选中父元素加黄色背景css
2:end返回span元素
3:span元素加橙色字体颜色css
**/
//返回最原始的DOM节点
$('span').parent().css('background', 'yellow').end().css('background' ,'orange');
//$('ul.first').find('.foo').css('background-color', 'red')
//.end().find('.bar').css('background-color', 'green');
$('ul.first').find('.foo')
.css('background-color', 'red')
.end().find('.bar')
.css('background-color', 'pink')
.end();
</script>
</body>
</html>特殊符号的处理/选择器的优化
特殊符号的处理(使用转义符)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>特殊符号的处理,使用转义符</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
</style>
</head>
<body>
<form action="">
<input type="checkbox" id="" name="gender[]" value="男"/>
<input type="checkbox" id="" name="gender[]" value="女"/>
<input type="checkbox" id="" name="gender[]" value="保密"/>
<input type="submit" value="提交"/>
<input type="reset" value="重选"/>
</form>
<script>
/*
//注意要加两个转义字符 \\[\\]
//中括号用两个转义字符
$('input[name=gender\\[\\]]').click(function(){
alert($(this).val());
});
*/
//这里加一个转义字符
//单引号,双引号用一个转义字符
$('input[type=\'checkbox\']').click(function(){
alert($(this).val());
});
</script>
</body>
</html>jquery选择器的优化
1:优先使用ID选择器
直接用ID选择器是最快的
能用ID选择器的不用class选择器
ID选择器要远远高于class选择器,class选择器要遍历整个文档,比如腾讯首页上千行,效率会比较慢。
2:在class选择器前添加标签名
example:
<p class="a">文本</p>
$('.a')这样可以选中但不推荐
$('p.a')只搜p标签内的a,不用每个标签都遍历,提高效率
examlle:
<div id="div1"><div>
$('div#div1')尤其在大项目中这样会很慢
直接$('#div1')就可以了
example:
<div id="div1">
<div id="div2"></div>
<div>
$('#div #div2')这样也会慢,直接写$('#div2')这样就行了
3:采用find(),而不使用上下文查找
find()比children()要快
4:强大的链式操作比缓存更快
<p class="a">文本</p>
var p = $('p');
p.css();
$('p').css()直接这样写会别上面缓存起来的快很多;
如果通过这个p元素查找上下文时,需要缓存。
直接操作就永链式操作
5:从左至右的模型1.3+版本更新
<div class="div1">
<p class="p2"></p>
</div>
$('.div1 p.p2')
$('div.div1 .p2')官方说1.3版本后这样选中比上面的快
隔行变色
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>隔行变色</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
#table{width: 600px;border-collapse: collapse;}
td{border:1px solid #DDDDDD;text-align: center;font-size:14px;padding:5px;}
</style>
</head>
<body>
<table id="table">
<tr>
<td>爱的默司</td>
<td>班得瑞</td>
<td>MP3</td>
<td>试听</td>
</tr>
<tr>
<td>孤枕難眠</td>
<td>周华健</td>
<td>MP3</td>
<td>试听</td>
</tr>
<tr>
<td>梅花</td>
<td>邓丽君</td>
<td>MP3</td>
<td>试听</td>
</tr>
<tr>
<td>床前明月光</td>
<td>梅艳芳</td>
<td>MP3</td>
<td>试听</td>
</tr>
<tr>
<td>大地</td>
<td>BEYOND</td>
<td>MP3</td>
<td>试听</td>
</tr>
<tr>
<td>游园惊梦</td>
<td>牡丹亭</td>
<td>MP3</td>
<td>试听</td>
</tr>
<tr>
<td>高山流水猎人情</td>
<td>陈诺</td>
<td>MP3</td>
<td>试听</td>
</tr>
<tr>
<td>鬼迷心窍</td>
<td>周华健</td>
<td>MP3</td>
<td>试听</td>
</tr>
<tr>
<td>安妮的仙境</td>
<td>班得瑞</td>
<td>MP3</td>
<td>试听</td>
</tr>
<tr>
<td>断肠梦</td>
<td>许冠杰</td>
<td>MP3</td>
<td>试听</td>
</tr>
</table>
<script>
/**
//js原生态隔行变色
var Totable = document.getElementById('table');
var Tr = Totable.getElementsByTagName('tr');
//alert(Tr.length);//10
for(var i=0;i<Tr.length;i++){
if(i%2==0){
Tr[i].style.background = 'yellow';
}else{
Tr[i].style.background = 'lightyellow';
}
}
**/
$('#table tr').filter(':even').css('background' ,'yellow').end().filter(':odd').css('background' ,'lightyellow');
</script>
</body>
</html>js原生态tab标签页
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>js原生态tab标签页</title>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
ul{
list-style-type: none;
height: 32px;
width: 300px;
margin-bottom:10px;
}
#ul li{
height: 30px;
width: 80px;
line-height: 30px;
text-align: center;
border: 1px solid #ddd;
float:left;
margin-right:3px;
cursor:pointer;
}
#ul li.current{
background:yellow;
}
#content>div{
width:300px;
height: 200px;
border: 1px solid #ddd;
display: none;
}
#content .show{
display: block;
}
</style>
</head>
<body>
<ul id="ul">
<li class="current">PHP</li>
<li>JS</li>
<li>JQUERY</li>
</ul>
<p style="clear:both;"></p>
<div id="content">
<div class="show">1:php...</div>
<div>2:javascript...</div>
<div>3:jquery...</div>
</div>
<script>
var ul = document.getElementById('ul');
var li = ul.getElementsByTagName('li');
var content = document.getElementById('content');
var div = content.getElementsByTagName('div');
for(var i=0;li.length>i;i++){
li[i].index = i;
li[i].onclick=function(){
for (var i=0;li.length>i; i++) {
li[i].className='';
div[i].style.display='none';
}
this.className="current";
div[this.index].style.display='block';
}
}
</script>
</body>
</html>jquery tab标签页 01
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jquery tab标签页</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
ul{
list-style-type: none;
height: 32px;
width: 300px;
margin-bottom:10px;
}
#ul li{
height: 30px;
width: 80px;
line-height: 30px;
text-align: center;
border: 1px solid #ddd;
float:left;
margin-right:3px;
cursor:pointer;
}
#ul li.current{
background:yellow;
}
#content>div{
width:300px;
height: 200px;
border: 1px solid #ddd;
display: none;
}
#content .show{
display: block;
}
</style>
</head>
<body>
<ul id="ul">
<li class="current">PHP</li>
<li>JS</li>
<li>JQUERY</li>
</ul>
<div id="content">
<div class="show">1:php...</div>
<div>2:javascript...</div>
<div>3:jquery...</div>
</div>
<script>
$('#ul li').click(function(){
//1:点击li的时候要切换样式
//当前点击元素添加current样式,其他兄弟元素移除current样式
$(this).addClass('current').siblings().removeClass('current');
//2:根据li的索引值,来确定那个div显示,其它div隐藏
//eq()索引第几个
//$(this).index()当前div是第几个
$('#content>div').eq($(this).index()).show().siblings().hide();
});
</script>
</body>
</html>jquery tab标签页 再精简两行合成一行
<script>
$('#ul li').click(function(){
//两行组合成一行
//其实就是在之前的例子里,两行代码前加了三个方法
//1:parent()找到父元素ul
//2:next()找到父元素ul的兄弟元素#content
//3:chilrend()找到三个子div元素
//后面接第二个代码
//这是链式操作,不管我还是觉得写两行清楚明白比较好。
$(this).addClass('current').siblings().removeClass('current').parent().next().children().eq($(this).index()).show().siblings().hide();
});
</script>jquery tab标签页 02
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jquery tab标签页</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
ul{
list-style-type: none;
height: 32px;
width: 300px;
margin-bottom:10px;
}
#ul li{
height: 30px;
width: 80px;
line-height: 30px;
text-align: center;
border: 1px solid #ddd;
float:left;
margin-right:3px;
cursor:pointer;
}
#content>div{
width:300px;
height: 200px;
border: 1px solid #ddd;
}
</style>
</head>
<body>
<ul id="ul">
<li>PHP</li>
<li>JS</li>
<li>JQUERY</li>
</ul>
<div id="content">
<div>1:php...</div>
<div>2:javascript...</div>
<div>3:jquery...</div>
</div>
<script>
$('#content>div:gt(0)').hide();
$('#ul>li:eq(0)').css('background' ,'yellow');
$('ul li').click(function(){
$(this).css('background' ,'yellow').siblings().css('background' ,'#fff');
$('#content>div').eq($(this).index()).show().siblings().hide();
});
</script>
</body>
</html>