jQuery class 选择器和文本添加

jQuery class selector and text adding

我有两个文件 index.htmlstar.js。 我的索引文件看起来是这样的:

 <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <div class="foo">
            <h2>First:</h2>
            <p>3</p>
        </div>
        <div class="foo">
            <h2>Second:</h2>
            <p>5</p>
        </div>
    </body>
    <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
    <script src="star.js" charset="utf-8"></script>
    </html>

我的 js 文件看起来像这样:

    var element = $(".foo > p");
    //Try to figure it out
    console.log('First: ' + element.text() + ' second: ' + element.text());

我想从这段代码中得到的只是按正确的顺序注销:

First: 3 second: 5

但是我的控制台给了我这个:

First: 35 second: 35

我知道 $(".%classname%) 方法看起来认为文件中的所有 foo 类 但它不是 return 数组。我能以某种方式解决我的问题吗?

  1. 我需要使用 jQuery。不是带有 .getElementsByClassName 的纯 js。
  2. 我无法更改我的 类 名字。 .foo 要求。
  3. 我需要不依赖于 类.
  4. 数量的解决方案

我在 :eq() 伪选择器中找到了最接近的解决方案,但还有其他方法吗?

text 方法将 return 文本 jQuery 对象中存在的所有元素的内容。

您将必须遍历元素中的项目,然后像这样打印每个项目

var element = $(".foo");
element.each(function() {
  var $this = $(this);
  snippet.log($this.find('h2').text() + ': ' + $this.find('p').text());
})
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="foo">
  <h2>First:</h2>
  <p>3</p>
</div>
<div class="foo">
  <h2>Second:</h2>
  <p>5</p>
</div>

尝试

$('.foo:nth-child(1) p').text()

$('.foo:nth-child(2) p').text()

编辑: 将从 fiddle 中提取我的答案以供将来参考:

使用循环遍历任意数量的元素

for(i=1; i <= $('div.foo').length; i++){
        $('.output').append($('.foo:nth-child('+i+') h1').text() + ": ");
    $('.output').append($('.foo:nth-child('+i+') p').text() + "<br/>");
}