jQuery .each() 将变量设置为它找到的第一个变量

jQuery .each() setting variable to the first one it finds

我试图遍历页面上的所有 .starwrapper div,然后在其中找到一些文本 div,然后将其添加到末尾显示div。

像这样:

<script type="text/javascript">
jQuery( document ).ready(function() {
    $('.starwrapper').each(function( index ) {
      var starvalue = $('.starwrapper .rating').text();
      $(this).children('.star-rating').append(starvalue);
    });
});
</script>

麻烦的是,他们每个人都获得了第一个 starvalue 变量的值。可能有人知道我做错了什么 .each()?

你的问题是这一行:

var starvalue = $('.starwrapper .rating').text();

实际上是绝对的,它搜索所有 .starwrapper 元素,不考虑 $this

试试这个:

<script type="text/javascript">
jQuery( document ).ready(function() {
    $('.starwrapper').each(function( index ) {
      var starvalue = $(this).find('.rating').text();
      $(this).children('.star-rating').append(starvalue);
    });
});
</script>

您必须从当前元素 $(this) 而不是全局查找文本,因此请尝试替换

var starvalue = $('.starwrapper .rating').text();

var starvalue = $(this).find('.rating').text();

我不确定,但试试这个 starvalue 变量:

var starvalue = $('.rating', $(this)).text();