Go to comments

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>



Leave a comment 0 Comments.

Leave a Reply

换一张