我有一组元素, 格式如下<ul>
    <li><input type="checkbox" id="1"/>1</li>
    <li><input type="checkbox" id="2"/>2</li>
    <li><input type="checkbox" id="3"/>3
        <ul>
            <input type="checkbox" id="4"/>4
            <input type="checkbox" id="5"/>5
        <ul>
    </li></ul>
我想要做的事情是在点击id为3的checkbox时,取出他同一级下的所有元素,就是1 2 3的checkbox和3下的ul集合.
目前用的方法是$(this).parentsUntil("ul") 这个方法返回的对象竟然不是父级对象,而是3自己和下面的4和5. 而在点击4的时候,取出的只有4自己. 是这个方法的问题还是我使用的问题.$(this).siblings()达到的结果和上面一样.只是在点击4的时候返回null

解决方案 »

  1.   

    老实的用$(this).parent()就行了.如果非要用parentsUntil的话 这样用就行了
    var parents = $(this).parentsUntil();
    var divparent = $(parents[parents.length-1]).parent();
    其实还没有$(this).parent()这个好用..直接就往上跳1级.
     ..这个parentsUntil返回的数组(这parents是复数形式,里面是dom对象的集合,要使用的话还得重新封装成jquery对象)中刚好不包括满足选择器参数条件(感觉有点拗口,就是说 你现在填的是ul ul就不被包括进去)的对象。这个有点奇怪,很容易产生误导.
    其实我也说不太清楚,这里有个地址 可以进去查一下你就知道了..http://cache.baidu.com/c?m=9d78d513d99b02e80faddf690d6795355903dc257d908c53248a870fd33a541b0120a1ac26510d198b863b3041e44b5ffdf041246c507ce1c09bd45dddccc37570956569315a9b4110d019b8cb3027c237902ceaab04e4bcf73091acd4d5&p=9c3bd61b85cc42af1ef5c4710e16d77c&user=baidu&fm=sc&query=jquery+parentsUntil&qid=f007a4201ae9cfbb&p1=2或者http://jquery01.diandian.com/post/2012-01-16/14500044
      

  2.   

    不是我不想用$(this).parent(). 只是元素层深不固定. 我不知道要跳几层,所以才用parentsUntil.
    不过1楼的方法确实可行. 虽然看不太懂
      

  3.   

    跟你解释一下吧
    var parents = $(this).parentsUntil();//这个里面随便你填ul或者div 或者某个节点的ID 都行..
    然后parents 就是一个array对象
    比如你现在的层次是
    当前的 this是一个li 上一层是个ul 然后再上两层都是div 再上一层是body
    现在想取的是body的话(里面什么都不填好像也是只往上一层还是一直上到顶层除了body,这个我没测试过,你可以自己试一下.如果你就是想到ul那一层 你就填入ul应该就行了. var parents = $(this).parentsUntil('ul');.).
    那么parents 里面就是 [li, ul, div1, div2]
    var divparent = $(parents[parents.length-1]).parent();
    //$(parents[parents.length-1])就等于 div2 div2的parent就是body了..