代码之家  ›  专栏  ›  技术社区  ›  Rodrigo Asensio

jquery子选择器问题

  •  5
  • Rodrigo Asensio  · 技术社区  · 15 年前

    我的HTML

    <div id="x">
      <div id="x1">
        some text
        <div>other text</div>
      </div>
      <div id="x2">just text</div>
    <div>
    

    我的电话

    我有这个元素,可以是任何jquery选择器,1个或多个元素:

    var x = $("#x");
    

    现在,我需要(这是一个插件,它将发现内部元素,如制表符),只浏览第一个的DIV元素,而不浏览其子元素。我正在努力…

    $.each($($("div"), x), function() {
      alert($(this).html());
    });
    

    显示: 1。一些文本其他文本 2.第2条。其他文本 三。只是文本

    $.each($($("div"), x).siblings(), function() {
      alert($(this).html());
    });
    

    显示: 1。纯文本 2。一些文本其他文本

    这是最近似的,但我需要正确的顺序。有什么建议吗?谢谢

    因为它是一个插件,我不能这样做。

    $("#x", "div....")
    

    我要这么做

    #(newselector, x)
    
    3 回复  |  直到 15 年前
        1
  •  10
  •   RaYell    15 年前

    如果你不能使用 $("#x > div") 因为它应该与您想到的所有选择器一起使用,然后假设您将特定选择器定义为var x:

    var x = $('#x');
    
    // this will select only the direct div children of x whatever the x is
    x.children('div');
    
        2
  •  1
  •   John Rasch    15 年前

    用途:

    $("#x > div")
    

    作为选择器-它将只选择 div 谁的身份证是 x .

        3
  •  1
  •   zombat    15 年前

    此方法将为您提供DIV的所有内部文本:

    x.children('div').each(function() {
      alert($(this).text());
    });
    

    如果你不想 全部的 来自多个子分区的文本组合,您只能访问每个分区的直接文本节点:

    x.children('div').each(function() {
      alert(this.childNodes[0].nodeValue);
    });
    

    注:假设 x 是由定义的jquery元素 var x = $('#x') .