使用jQuery更改基于单元格值的表行颜色

时间:2014-09-15 18:04:57

标签: jquery ruby-on-rails-4

我对jQuery没有多少经验,所以我不确定我与此有多接近。我的Rails应用程序中有一个表,我想要score.test_type值== true的行。 (当它== true时,我将它显示为单词"练习"如果这很重要)我的表ID是分数,我有一个带有背景颜色的CSS类.score_table_color。在我的下面的代码中,我根本没有引用score.test_type,我不确定是一个问题。这是我到目前为止的jQuery代码

$(function(){
$("#scores tr").keyup(function() {
  var textValue = $(this).val();
  if(textValue == false){
    // add css class or any manipulation to your dom.
    $("#scores tr").addClass('score_table_color');
  }
 });
});

我将这个粘贴在users.js文件中,因为该表格显示在用户的页面上。 (用户has_many分数)

更新

我已将代码更新为:

$(function(){
$("#scores tr").ready(function() {
  var textValue = $(this).val();
  if(textValue == false){
    // add css class or any manipulation to your dom.
    $("#scores tr").addClass("score_table_color");
  }
 });
});

这使整个表格变蓝。我的代码的问题是我似乎在说表中的某些内容是错误的,不一定是score.test_type这是单元格编码的方式:

<td>
 <% if score.test_type == true %>
  <%= 'Practice' %>
 <% else %>
  <%= 'Actual' %>
 <% end %>      
</td>

2 个答案:

答案 0 :(得分:0)

我最后只使用Ruby而不是jQuery来解决这个问题。 (我仍然想弄清楚如何使jQuery正常工作。以下是我如何使它工作:

下面是显示循环开始的代码,它循环遍历用户的分数以创建表。 Al我真的把它放在一个if / else语句中,说“如果score.test_type == false,那么应用css class score_table_color,否则就单独留下。然后我的第一个是score.test_type,这是一个布尔值如果这是假的,那么行背景颜色会根据我的CSS而改变。

<% @scores.order('taken_date').where.not(:name => 'ACT').each do |score| %>
    <% if score.test_type == false %>
        <tr class="score_table_color">
    <% else %>
        <tr>
    <% end %>

          <td>
            <% if score.test_type == true %>
              <%= 'Practice' %>
            <% else %>
              <%= 'Actual' %>
            <% end %>       
          </td> 

答案 1 :(得分:0)

是的,上面的答案肯定会奏效。但我想在我创建的职位委员会中发布我如何解决自己的问题,所以我的答案将比问题所需的任务更详细,但我的结论将严格涉及使用简单的if..else陈述来回答这个问题。

<强>首先

我定义了一个css来处理我的亮点,这样我的样式表管道中就有以下内容:

/* For Row Highlighted */

.highlighted {
  background-color: #CFF3FF;
}

注意:您可以根据需要使用任何颜色。

<强>其次

通过运行rails g migration addHighlightedToJobs,我使用布尔数据类型向已存在的表添加了一列。在我自己的情况下, 突出显示 是我的ColumnName, 作业 是我的TableName,因此我的迁移看起来像这样:

class AddHighlightedToJobs < ActiveRecord::Migration
  def change
    add_column :jobs, :highlighted, :boolean
  end
end

然后,我确实运行rake db:migrate来迁移我的新迁移。

注意:如果您按照我的说明生成迁移,则TableName必须是 Plural

<强>第三

我在我的表单中添加了一个check_box,只是在我的列名称上选中或取消标记为 true false

<%= f.check_box :highlighted %>

<强>最后

要回答问题,因为我的表单上有check_box,如果选中,则会在我的数据库表上发布 true ,并且如果未选中,则会在我的数据库表上发布 false

因此,要在我的rails应用程序中更改我的表格行颜色,我使用了一个简单的if..else语句来调用我的样式表中的突出显示,以便我有:

<% @jobs.each do |job| %>

    <% if job.highlighted == true %>
      <section class="container">
        <div class="row jobs highlighted">
        <div class="col-md-4" style="font-size: 20px;"><strong><%= job.company_name %></strong></div>
        <div class="col-md-4" style="font-size: 20px;"><%= link_to(job.title, job) %></div>
        <div class="col-md-4 text-right" style="font-size: 20px; float: left;"><%= job.created_at.strftime('%d %B %y') %></div>
        </div>
      </section>
    <% else %>
      <section class="container">
        <div class="row jobs">
        <div class="col-md-4" style="font-size: 20px;"><strong><%= job.company_name %></strong></div>
        <div class="col-md-4" style="font-size: 20px;"><%= link_to(job.title, job) %></div>
        <div class="col-md-4 text-right" style="font-size: 20px; float: left;"><%= job.created_at.strftime('%d %B %y') %></div>
        </div>
      </section>
    <% end %>

<% end %>

我真的相信我的结论是干的 - 这违反了Rails范式。我们可以重写它,使它成为:

<% @jobs.each do |job| %>
      <section class="container">
        <% if job.highlighted == true %>
          <div class="row jobs highlighted">
        <% else %>
          <div class="row jobs">
        <% end %>
        <div class="col-md-4" style="font-size: 20px;"><strong><%= job.company_name %></strong></div>
        <div class="col-md-4" style="font-size: 20px;"><%= link_to(job.title, job) %></div>
        <div class="col-md-4 text-right" style="font-size: 20px; float: left;"><%= job.created_at.strftime('%d %B %y') %></div>
        </div>
        </div>
      </section>
<% end %>