每个div的jQuery长度枚举

时间:2018-06-08 19:20:21

标签: jquery html css

我有7行,每行都有字符,我想在另一组7行中显示计数。 \

例如对于第一个#actual .list项目,我希望它在#years .list中显示4个字符,对于第二个#actual .list项目,我希望它在#years中显示2个字符。列表部分。

$(function() {
  var number = $('#actual .list');
  for (i = 0; i < number.length; i++) {
    $('#years .list').html(number[i].text().length);
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="actual">
  <p class="list">Hello</p>
  <p class="list">Hey</p>
  <p class="list">Hi</p>
  <p class="list">Hello</p>
  <p class="list">Hey</p>
  <p class="list">Hi</p>
  <p class="list">Woo</p>
</div>
<div id="years">
  <p class="list">#:</p>
  <p class="list">#:</p>
  <p class="list">#:</p>
  <p class="list">#:</p>
  <p class="list">#:</p>
  <p class="list">#:</p>
  <p class="list">#:</p>
</div>

3 个答案:

答案 0 :(得分:0)

您正在使用#years div下的列表类将所有元素设置为值,以便每次都覆盖它。

假设#actar下的每个元素的#years下都有一个元素,你可以这样做:

$(function() {
    var number = $('#actual .list');
        for (i = 0; i < number.length; i++) {
            $($('#years .list')[i]).html(number[i].text().length);
                }
});

答案 1 :(得分:0)

您的问题并不完全清楚,但您似乎尝试使用第一组中关联的p中文本的长度填充第二组p元素

在这种情况下,您有几个问题。首先通过索引访问jQuery对象返回底层Element,因此没有text()方法。其次,您设置循环中所有html()元素的.list而不是当前迭代中的元素。

要修复此问题并改进逻辑,您可以为text()提供一个函数,该函数将当前元素的索引作为参数,您可以使用该参数来比较第一个和第二个中的p元素使用eq()设置,如下所示:

&#13;
&#13;
$(function() {
  var $list = $('#actual .list');
  $('#years .list').text(function(i) {
    return $list.eq(i).text().length;
  });
});
&#13;
p { margin: 0; }
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="actual">
  <p class="list">Hello</p>
  <p class="list">Hey</p>
  <p class="list">Hi</p>
  <p class="list">Hello</p>
  <p class="list">Hey</p>
  <p class="list">Hi</p>
  <p class="list">Woo</p>
</div>
<div id="years">
  <p class="list">#:</p>
  <p class="list">#:</p>
  <p class="list">#:</p>
  <p class="list">#:</p>
  <p class="list">#:</p>
  <p class="list">#:</p>
  <p class="list">#:</p>
</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

CREATE TABLE parent (id INT NOT NULL,
PRIMARY KEY (id)
);

CREATE TABLE child (
id INT, 
parent_id INT,
PRIMARY KEY  (`id`),
FOREIGN KEY (parent_id) REFERENCES parent(id)
ON DELETE CASCADE
);

在for循环中,你应该逐个设置$(function() { var $number = $('#actual .list'); for (var i = 0; i < $number.length; i++) { var text = $number.eq(i).text(); $('#years .list').eq(i).html(text.length); } }); 的HTML,否则它们将永远是for循环中的最后一个。

我更喜欢使用#years .list来获取jQuery元素,然后调用.eq()(或.html())函数来设置内容。

为了最佳实践,

  • .text()添加到变量名称以表明它是jQuery元素($
  • for循环中的
  • $number应使用i初始化,以用于本地范围