$('.div').children(':last').css('border', '3px solid blue')
这句我理解的是 查找所有class为div的元素,在这些div的最后一个子元素加样式,
那应该3个 div最后的子元素都有样式啊,为什么只有最后一个div有样式
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title></title> <link rel="stylesheet" href="imooc.css" type="text/css"> <style> .left { width: auto; height: 120px; } .left div { width: 150px; height: 70px; padding: 5px; margin: 5px; float: left; background: #bbffaa; border: 1px solid #ccc; } a { display: block; } </style> <script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script> </head> <body> <h2>children方法()</h2> <div class="left first-div"> <div class="div"> <ul class="level-1"> <li class="item-1">1</li> <li class="item-2">2</li> <li class="item-3">3</li> </ul> </div> <div class="div"> <ul class="level-2"> <li class="item-1">1</li> <li class="item-2">2</li> <li class="item-3">3</li> </ul> </div> <div class="div"> <ul class="level-3"> <li class="item-1">1</li> <li class="item-2">2</li> <li class="item-3">3</li> </ul> </div> </div> <button id="bt1">点击:children无参数</button> <button id="bt2">点击:children传递表达式</button> <script type="text/javascript"> $("#bt1").click(function() { //? }) </script> <script type="text/javascript"> $("#bt2").click(function() { //找到所有class=div的元素 //找到其对应的子元素ul,然后筛选出最后一个,给边宽加上颜色 $('.div').children(':last').css('border', '3px solid blue') }) </script> </body> </html>
Questions about children? -PHP Chinese website Q&A-Questions about children? -PHP Chinese website Q&A
Please watch and learn.
因为在children方法后面带了一个参数:last,last是返回被选元素的最后一个元素,所以只有最后一个div会生效,将last去掉,三个div都会生效
确实是【查找所有class为div的元素,在这些div的最后一个子元素加样式】,但是要明确的是,div的子元素是ul,,所以$('.div').children获取的是 level-1、level-2、level-3,最后一个子元素是level-3,所以最后只有level-3有样式。