请问JQuery中的子选择器有哪几种形式?
例如我有下面的HTML代码
<ol>
   <li>列表</li>
   <li>
      <ul>
     <li>aaaaaaaaa</li>
     <li>bbbbbbbbb</li>
     <li>ccccccccc</li>
      </ul>
   </li>
   <li>列表</li>
   <li>列表</li>
</ol>
我用JQuery选出所有不包含<ul>的<li>列表项时,下面的两种写法实现的效果完全不同$(document).ready(function(){
$("ol >li").not("[ul]").css("border","1px solid red")
})$(document).ready(function(){
$("ol  li").not("[ul]").css("border","1px solid red")
})请问$("ol li") $("ol > li")这两种子选择器有什么区别吗?这里的not("[ul]")为什么一定要用[]括起来呢?

解决方案 »

  1.   

    $("ol > li")
    只是找出ol 下一层 的 li元素  --对应你html代码应该获得长度为4的数组
    $("ol li")
    是找出ol元素下的 所有 li元素  --对应你html代码应该获得长度为7的数组not("[ul]")
    我用不用[] 都是一样的  --所以我觉得区别不到建议LZ去这上面 瞅瞅
    我就是按那上面学滴http://jquery-api-zh-cn.googlecode.com/svn/trunk/index.html
      

  2.   

    eg1:在给定的祖先元素下匹配所有的后代元素
    参数
    ancestorSelector任何有效选择器descendantSelector用以匹配元素的选择器,并且它是第一个选择器的后代元素示例
    描述:
    找到表单中所有的 input 元素HTML 代码:
    <form>
      <label>Name:</label>
      <input name="name" />
      <fieldset>
          <label>Newsletter:</label>
          <input name="newsletter" />
     </fieldset>
    </form>
    <input name="none" />jQuery 代码:
    $("form input")结果:
    [ <input name="name" />, <input name="newsletter" /> ]
    eg2:
    在给定的父元素下匹配所有的子元素
    参数
    parentSelector任何有效选择器childSelector用以匹配元素的选择器,并且它是第一个选择器的子元素示例
    描述:
    匹配表单中所有的子级input元素。HTML 代码:
    <form>
      <label>Name:</label>
      <input name="name" />
      <fieldset>
          <label>Newsletter:</label>
          <input name="newsletter" />
     </fieldset>
    </form>
    <input name="none" />jQuery 代码:
    $("form > input")结果:
    [ <input name="name" /> ]