代码之家  ›  专栏  ›  技术社区  ›  jason m

jquery:选择第一个子节点

  •  0
  • jason m  · 技术社区  · 14 年前

    假设我有一个以下结构的树:

    <div>node level1
         <div>node level2
              <div>node level3...etc
    

    jquery中是否有一种方法,即如果单击了DIV LEVEL1,那么只有LEVEL2的DIV响应?

    含义:

    $('div').click(function(){
    $('div').children(first div child).css('color','red');
    })
    

    谢谢你的意见!

    ::编辑:
    大家好,谢谢你们的耐心和投入。我顽固地着手解决这个问题,结果解决了。我只需要找到一种方法来打开我的树的内部结构,一切都变得非常清晰。

    我基本上想找到一种方法,让一棵超级花式的树倒塌/扩展,而不被困在“李ul li”的例子中,我一直看到,因为我觉得它们有点不透明。


    this fiddle 有我的解决方案。注意:我假设如果某个对象有0个子对象,那么它很可能是要跟踪的链接。我相信我已经设计好的结构,你们有能力解决这最后一步。

    感谢您的帮助,我期待您的反馈。
    最后一点注意:这可以很容易地进行软编码,以符合任何树结构大小。一个while循环,它确认子节点或单击的节点,允许连接并调用eval函数,将能够在子节点中一直向下钻取,并确保在主节点也被隐藏之前它们都被隐藏。

    只是一个想法。

    4 回复  |  直到 9 年前
        1
  •  3
  •   Nick Craver    14 年前

    你可以这样做:

    $('div').click(function(){
      $(this).children('div').css('color','red');
    });
    

    而不是全选 <div> 元素,再次使用 this 并且做 .children() 从那里得到直接的孩子 <DIV & GT; 元素。 Here's a quick example ,注意本例中, <DIV & GT; S需要A color 最初,否则它将级联下来……即使它实际上没有应用到3级元素。

        2
  •  1
  •   Java Drinker    14 年前
        3
  •  0
  •   Capitaine    14 年前

    这是CSS选择器的问题,因为jquery使用它。

    我认为您可以简单地为要选择的DIV定义一个类:

    <div class="Level1">node level1
        <div class="Level2">node level2</div>
    </div>
    

    然后在jquery中选择它,如下所示:

    $('div.Level1').click(function(){
    $(this).children('div.Level2').css('color','red');
    })
    
        4
  •  0
  •   STW    14 年前

    编辑为 .click() 语境:

    在点击事件中,您将获得 this 要使用的jquery对象(它是已单击的元素)。所以你可以使用 .children() 要访问所有子元素(它只返回直接子元素,因此在您的场景中只返回项目级别2的项目):

    $('div').click(function(){
        $(this).children().css('color','red');
    }
    

    或者,如果你只想要 第一 2级项目,您可以使用 :first-child 选择器:

    $('div').click(function(){
        $(':first-child', this).css('color','red');
    }