如何在jQuery中使用.each获取最高级别​​的值

时间:2014-04-22 00:59:24

标签: jquery each

我有三个div级别,我只想获得第二级的值。我使用每个函数内传递的索引参数来跟踪。这是我的代码:

<div id="top">
  <div>1</div>
  <div>
      <h2>
          <div>XXXXXXXXX</div>
      </h2>
  </div>
  <div>3</div>
</div>
<div id="result"></div>

和剧本:

$("#top>div").each(function(index){
    $("#result").append("<p>index:" + index + " > " + $(this).text() + "</p>");
});

在我的代码中,我希望结果跳过xxxx并保持索引值不变。 http://jsfiddle.net/kalmarsh80/g4JSN/

3 个答案:

答案 0 :(得分:1)

您可能需要以下内容(Working Example):

$("#top > div").each(function(index){
    var txt = $(this).clone().children().remove().end().text();
    $("#result").append("<p>index:" + index + " > " + txt + "</p>");
});

答案 1 :(得分:0)

请尝试以下方法:

$("#top>div").not(":nth-child(2)").each(function(index){
    $("#result").append("<p>index:" + index + " > " + $(this).text() + "</p>");
});

JsFiddle Here

如果您只想第二级的值那么您不需要.each

    $("#result").append("<p>index:2 > " + $("#top>div").eq(1).text() + "</p>");

答案 2 :(得分:0)

<强> LIVE DEMO

$("#top > div").text(function(i, t){ // Pass element index and text as arguments
  t = $(">",this)[0] ? "" : t;
  $("#result").append("<p>index:"+ i +" > "+ t +"</p>");
});


$(">",this)[0]用于检查您的元素是否包含子元素 比使用条件运算符(?:),只需将参数值设置为"" 空字符串,如果为真。

如果您需要处理子元素的加载,我建议您使用这个元素:

var res = "";    

$("#top > div").text(function(idx, txt){
  res += "<p>index: "+ idx +" > "+ ($(">",this)[0]?"":txt) +"</p>";
});

$('#result').append( res ); // append only once!