WordPress - 循环内的脚本只能运行一次

时间:2015-11-17 22:11:43

标签: javascript php wordpress

我的标题中有这个脚本,我的索引中的这段代码,在帖子循环中

  $(function() {
    var score = parseInt($('.post-score').text().trim());
    var color = '#de1d1d';
    if (!isNaN(score)) {
      if (score >= 5) {
        color = '#b84e1f';
      }
      if (score >= 7) {
        color = '#26b81f';
      }
      if (score >= 9) {
        color = '#d9e019';
      }
      if (score >= 10) {
        color = '#0cf';
      }
      $('.post-score').css('color', color);
    }
  });
<?php if( in_category( 'reviews') ) : ?>
<div id="post">
  <span class="post-score">
      <?php the_field('customfield'); ?>
  </span>
</div>
<?php endif; ?>

此功能根据输出的数字更改自定义字段文本颜色,实际上工作正常,但只需。它只适用于FIRST POST的评论,而不是每个帖子。

我的代码出了什么问题?

3 个答案:

答案 0 :(得分:1)

分别尝试jQuery:https://api.jquery.com/each/

现在,您的代码只会查看它找到的第一个.post-score

编辑:我已经在这个小提琴上为你工作 - https://jsfiddle.net/8b53j2ah/1/

答案 1 :(得分:1)

该JQuery代码可能只执行一次。但是你可以用PHP实现同样的目标。

<?php if( in_category( 'reviews') ) :
    $score = get_field('customfield');
    $score_color = '';
    if($score >= 5 && $score < 7) $score_color = 'b84e1f';
      elseif($score >= 7 && $score < 9) $score_color = '26b81f';
      elseif($score >= 9  && $score < 10) $score_color = 'd9e019';
      elseif($score >= 10) $score_color = '0cf';
?>
<div id="post">
  <span class="post-score" style="color: #<?php echo $score_color; ?>">
      <?php the_field('customfield'); ?>
  </span>
</div>
<?php endif; ?>

您可能希望使用单独的CSS类而不是style-attribute。

答案 2 :(得分:0)

你可以设置一个包含上述javascript的函数,然后在onchange属性下运行它。例如。平变化= “函数()”