各位大虾,我是jQuery初学者,在学习过程中,遇到了一点问题希望大家能够帮忙解决下。下面是例子的代码和问题说明
在此说明一下,我用得是jQuery-1.7.2
问题:当我在查找div中类为.mini的非最后一个div元素时,为什么这样写就是在div和.mini中间加一个空格才能正确排除最后一个div元素$("div .mini:not(:last)").css("background", "#baf");
而如果div和.mini中间不加空格则不能排除最后一个div元素$("div.mini:not(:last)")。这两种查找方式具体有什么不同呢?请各位大虾详细说明下,谢谢给位大虾了。
<script language="javascript" type="text/javascript">
//所有div中类为.mini的非最后1个div元素
$("#btn4").click(function(){
//过滤器
//$("div .mini:not(:last)").css("background", "#baf"); //问题有待解决$("div.mini:not(:last)")
});
</script>
<body>
<button id="reset">手动重置页面元素</button>
<input type="checkbox" id="isreset" checked="checked"/>
<label for="isreset">点击下列按钮时先自动重置页面</label>
<br />
<br />
<h3>基本选择器.</h3>
<!-- 控制按钮 -->
<input type="button" value="所有div中类为.mini的非最后1个div元素" id="btn4"/>
<br />
<br />
<!-- 测试的元素 -->
<div class="one" id="one" > id为one,class为one的div
<div class="mini">class为mini</div>
</div>
<div class="one" id="two" title="test" > <b>id为two,class为one,title为test的div.</b>
<div class="mini" title="other">class为mini,title为other</div>
<div class="mini" title="test">class为mini,title为test</div>
</div>
<div class="one">
<div class="mini">class为mini</div>
<div class="mini">class为mini</div>
<div class="mini">class为mini</div>
<div class="mini"></div>
</div>
<div class="one">
<div class="mini">class为mini</div>
<div class="mini">class为mini</div>
<div class="mini">class为mini</div>
<div class="mini" title="tesst">class为mini,title为tesst</div>
</div>
<div style="display:none;" class="none">style的display为"none"的div</div>
<div class="hide">class为"hide"的div</div>
<div> 包含input的type为"hidden"的div
<input type="hidden" size="8"/>
</div>
<span id="mover">正在执行动画的span元素.</span>
</body>
------解决方案--------------------
实际上,在你给出的测试数据中,两种选择器能选择到同样的元素对象,为了直观说明父子选择器的作用,请考虑一下下面这个例子。
- HTML code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js"></script> <script type="text/javascript"> $(document).ready( function() { $("#btn4").click( function() { $("div .mini:not(:last)").css("border", "1px solid red"); $("div.mini:not(:last)").css("background-color", "#CCC"); }); }); </script> </head> <body> <button id="reset">手动重置页面元素</button> <input type="checkbox" id="isreset" checked="checked"/> <label for="isreset">点击下列按钮时先自动重置页面</label> <br /> <br /> <h3>基本选择器.</h3> <!-- 控制按钮 --> <input type="button" value="所有div中类为.mini的非最后1个div元素" id="btn4"/> <br /> <br /> <!-- 测试的元素 --> <div class="one" id="one" > id为one,class为one的div <div class="mini">class为mini</div> <p class="mini" style="font-size:18px; font-weight:bold; color:red;">这里放置一个类名为mini的p元素,$("div.mini") 获取不到这个元素,$("div .mini")能获取这个元素</p> </div> <div class="one" id="two" title="test" > <b>id为two,class为one,title为test的div.</b> <div class="mini" title="other">class为mini,title为other</div> <div class="mini" title="test">class为mini,title为test</div> </div> <div class="one"> <div class="mini">class为mini</div> <div class="mini">class为mini</div> <div class="mini">class为mini</div> <div class="mini"></div> </div> <div class="one"> <div class="mini">class为mini</div> <div class="mini">class为mini</div> <div class="mini">class为mini</div> <div class="mini" title="tesst">class为mini,title为tesst</div> </div> <div style="display:none;" class="none">style的display为"none"的div</div> <div class="hide">class为"hide"的div</div> <div> 包含input的type为"hidden"的div <input type="hidden" size="8"/> </div> <span id="mover">正在执行动画的span元素.</span> </body> </html>