javascript - 用 Font Awesome 替换数字 (jQuery)

标签 javascript jquery wordpress

好的,请不要因为问这个问题而怠慢我,我是 jQuery 的新手。我打算使用 Wordpress 的 Advanced Custom Fields 插件制作自己的评级系统(因为我找不到)。

我有一个名为 Ranking 的 ACF,我在其中填写了一个数字,例如 1。使用 replace我在 Stackoverflow 上找到的函数我替换了 1<i class="fa fa-star" aria-hidden="true"></i> (来自 Font Awesome 的一颗星)。

这对第一项很好用,在本例中是 2所以我得到2星。但是第二个值是 5但它显示2星星。看起来它没有看到差异或其他东西。如果我删除替换脚本,它确实会显示 2 和 5。

我已经尝试了几种方法,包括 /1/g我阅读了一些在全局范围内使用它的地方,但这没有用。我需要 foreach 吗?或使这项工作成功的东西?我是否应该放弃替换值的整个想法?

这是我的代码(它输出一个从 1 到 5 的值(没有 .5):

<?php if( get_field('ranking') ): ?>
      <tr>
        <td class="td-top">Ranking:</td>
        <td class="star_ranking"><?php the_field('ranking'); ?></td>
      </tr>
<?php endif; ?>

还有 jQuery:

$('.star_ranking').html($('.star_ranking').html().replace(/1/g,'<i class="fa fa-star" aria-hidden="true"></i>'));
$('.star_ranking').html($('.star_ranking').html().replace(/2/g,'<i class="fa fa-star" aria-hidden="true"></i><i class="fa fa-star" aria-hidden="true"></i>'));
$('.star_ranking').html($('.star_ranking').html().replace(/3/g,'<i class="fa fa-star" aria-hidden="true"></i><i class="fa fa-star" aria-hidden="true"></i><i class="fa fa-star" aria-hidden="true"></i>'));
$('.star_ranking').html($('.star_ranking').html().replace(/4/g,'<i class="fa fa-star" aria-hidden="true"></i><i class="fa fa-star" aria-hidden="true"></i><i class="fa fa-star" aria-hidden="true"></i><i class="fa fa-star" aria-hidden="true"></i>'));
$('.star_ranking').html($('.star_ranking').html().replace(/5/g,'<i class="fa fa-star" aria-hidden="true"></i><i class="fa fa-star" aria-hidden="true"></i><i class="fa fa-star" aria-hidden="true"></i><i class="fa fa-star" aria-hidden="true"></i><i class="fa fa-star" aria-hidden="true"></i>'));

我搜索了 Stackoverflow,但找不到类似的问题。

最佳答案

这里是解决方案 https://jsfiddle.net/9fo1fz77/

$('.star_ranking').each(function() {
	var starCnt = parseInt($(this).html());
  $(this).html('');
  for(var i=0; i<starCnt; i++){
  	$(this).append('<i class="fa fa-star" aria-hidden="true"></i>');
  }
})
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tbody>
    <tr>
      <td class="td-top">Ranking:</td>
      <td class="star_ranking">1</td>
    </tr>
    <tr>
      <td class="td-top">Ranking:</td>
      <td class="star_ranking">2</td>
    </tr>
    <tr>
      <td class="td-top">Ranking:</td>
      <td class="star_ranking">5</td>
    </tr>
  </tbody>
</table>

关于javascript - 用 Font Awesome 替换数字 (jQuery),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45037573/

相关文章:

jquery - 通过 AJAX (smoothstate.js) 加载页面时,联系表单 7 抛出 'wpcf7.initForm is not a function' 错误

javascript - 如何使用 jQuery 获取 href 值?

javascript - jQuery datepicker - 本地代码不起作用?

Javascript/jQuery - 数组中的 IF 和 IF 值 :pair

javascript - 如何对具有相同类的不同 div 使用相同的 JQuery 效果

php - 如何将Wordpress标题标签转换为html div标签

javascript - 表单的服务器端验证

javascript - 使用 javascript/jquery 将 html 转换为 svg

javascript - 从 JSON 项目构建 JSON 数组

php - WordPress register_post_type 无效的帖子类型