我正在努力将数组分成3个单独的td。
$(runner).find(".third_level .jockey_stats").html(runners[i].jockey_stats);
$(runner).find(".third_level .trainer_stats").html(runners[i].trainer_stats);
jockey_stats& trainer_stats都是包含3条信息的数组,如下所示:
<td>248-28(11.3%)-35</td>
我希望它能像这样显示在表格中
<td>248</td>
<td>28(11.3%)</td>
<td>35</td>
HTML
<table class="third_level" cellspacing="0" border="0">
<tbody>
<tr>
<th><%= I18n.t("views.wagering.third_level.career_earnings") %></th>
<th><%= I18n.t("views.wagering.third_level.jockey_stats") %></th>
<th><%= I18n.t("views.wagering.third_level.trainer_stats") %></th>
</tr>
<tr>
<% if @third_level_runner %>
<td class="earnings tl_data"><%= number_to_currency(@third_level_runner.total_earnings, :unit => "₪", :precision => 0, :delimiter => ",") %></td>
<td class="jockey_stats tl_data"><%= @third_level_runner.jockey_stats %></td>
<td class="trainer_stats tl_data"><%= @third_level_runner.trainer_stats %></td>
<% else %>
<td class="earnings tl_data">-</td>
<td class="jockey_stats tl_data">-</td>
<td class="trainer_stats tl_data">-</td>
<% end %>
</tr>
</tbody>
答案 0 :(得分:0)
好的,我会咬人:
$(runner).find(".third_level .jockey_stats").html(runners[i].jockey_stats.replace(/-/g, , '</td><td>'));
应该这样做。
如果您不想使用正则表达式:
$(runner).find(".third_level .jockey_stats").html(runners[i].jockey_stats.split('-').join('</td><td>'));
正则表达式方法的工作原理如下:表达式匹配短划线(-
),并用</td><td>
替换它,使用全局标志(g
),表达式为应用于字符串中的所有短划线。
有效<td>248-28(11.3%)-35</td>
变为<td>248</td><td>28(11.3%)-35</td>
,然后<td>248</td><td>28(11.3%)</td><td>35</td>
在这种情况下,join-split
方法会导致更多开销,首先将字符串分解为字符串数组:
'<td>248-28(11.3%)-35</td>'.split('-');
变为:
['<td>248','28(11.3%)','35</td>']
应用哪个join
,</td><td>
作为分隔符,产生
<td>248</td><td>28(11.3%)</td><td>35</td>
但是,如果标记可能包含破折号,则应该使用正则表达式方法,并稍微处理表达式。一个懒惰的解决方案可能是:
jockey_stats.replace(/\>[^<]*/g, function(inner)
{//inner matches substring starting from first > to first <
return inner.replace(/-/g, '</td><td>');
});
这样,标签中包含破折号的属性就不会被处理
表达方式很简单:
\>[^<]*
匹配>
以及不 <
的所有后续字符(如果有),换句话说,>
和<
之间的所有内容</td><td>
。
然后将此匹配传递给一个函数,该函数用console.log('<td data-type="foo">248-28(11.3%)-35</td>'.replace(/\>[^<]*/g, function(inner)
{
return inner.replace(/-/g, '</td><td>');
}));
替换所有破折号。
例如:
"<td data-type="foo">248</td><td>28(11.3%)</td><td>35</td>"
记录{{1}}