【问题标题】:How to find all rows with background-color yellow using jquery?如何使用 jquery 查找背景颜色为黄色的所有行?
【发布时间】:2017-08-28 05:59:58
【问题描述】:

我想查找属性为background-color=rgb(255, 255, 0) 的所有行。 按下“搜索”按钮应该可以做到这一点。我不明白为什么这不起作用。什么都找不到。搜索代码:

$("#btnSearch").click(function(){  
  var rows = $("#tbl1 tr[style='background-color:rgb(255, 255, 0)']");     
})

整个例子是here

【问题讨论】:

  • 您要搜索的内容。页面中有没有搜索框。
  • 这对我不起作用。
  • 不要使用内联样式,而是考虑为元素使用一个类。一个类很容易找到,也更清晰

标签: javascript jquery html css background-color


【解决方案1】:

干净的方法是使用类而不是内联样式。

$("#btnSearch").click(function() {

  console.log($('#tbl1 tr.yellow'))
})
.yellow {
  background-color: rgb(255, 255, 0);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id='tbl1' class="table table-hover table-bordered">
  <thead>
    <tr>
      <th>#</th>
      <th>Ime izdelka</th>
      <th>Opisni REF</th>
      <th>LOT/serijska/EDI</th>
      <th>Stanje (REF)</th>
      <th>Stanje (LOT)</th>
      <th>Privzeta skupina</th>
    </tr>
  </thead>
  <tfoot>

  </tfoot>
  <tbody>
    <tr class="yellow">
      <td data-id="iROW_NUMBER" style="background-color: rgb(255, 255, 0);">1</td>
      <td data-id="cPROD_NME" style="background-color: rgb(255, 255, 0);">Kortikalni 2.0/14mm (zlati)</td>
      <td data-id="cPROD_DCD" style="background-color: rgb(255, 255, 0);">401.364</td>
      <td data-id="cPRSE_DCD" style="background-color: rgb(255, 255, 0);">8036572</td>
      <td data-id="iPROD_QUA_QUA" style="background-color: rgb(255, 255, 0);">6</td>
      <td data-id="cPRSS_QUA_QUA" style="background-color: rgb(255, 255, 0);">3</td>
      <td data-id="cPRGR_NME" style="background-color: rgb(255, 255, 0);">Stopalo - SYNTHES</td>
    </tr>
    <tr class="yellow">
      <td data-id="iROW_NUMBER" style="background-color: rgb(255, 255, 0);">2</td>
      <td data-id="cPROD_NME" style="background-color: rgb(255, 255, 0);">Kortikalni 2.0/14mm (zlati)</td>
      <td data-id="cPROD_DCD" style="background-color: rgb(255, 255, 0);">401.364</td>
      <td data-id="cPRSE_DCD" style="background-color: rgb(255, 255, 0);">8327937</td>
      <td data-id="iPROD_QUA_QUA" style="background-color: rgb(255, 255, 0);">6</td>
      <td data-id="cPRSS_QUA_QUA" style="background-color: rgb(255, 255, 0);">1</td>
      <td data-id="cPRGR_NME" style="background-color: rgb(255, 255, 0);">Stopalo - SYNTHES</td>
    </tr>
    <tr>
      <td data-id="iROW_NUMBER">3</td>
      <td data-id="cPROD_NME">Kortikalni 2.0/14mm (zlati)</td>
      <td data-id="cPROD_DCD">401.364</td>
      <td data-id="cPRSE_DCD">9572333</td>
      <td data-id="iPROD_QUA_QUA">6</td>
      <td data-id="cPRSS_QUA_QUA">2</td>
      <td data-id="cPRGR_NME">Stopalo - SYNTHES</td>
    </tr>
  </tbody>
</table>

<br/>
<br/>
<button id="btnSearch">Search</button>

【讨论】:

  • 找到行后如何设置类?假设我想将所有行上的黄色类更改为''(无类,空字符串。)基本上我想从具有该类的行中删除黄色类。
  • 只需使用 removeClass() @FrenkyB $('#tbl1 tr.yellow').removeClass("yellow")
【解决方案2】:

试试这个..

$("#btnSearch").click(function(){  
  
  
  $("#tbl1 tr").each(function () {
     if($(this).css("background-color") == "rgb(255, 255, 0)")
     {
     alert('I am Yellow ;)');
     }
     else{
     alert('I am White ;)');
     }
});
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id='tbl1' class="table table-hover table-bordered">
        <thead>
          <tr>
            <th>#</th>
            <th>Ime izdelka</th>
            <th>Opisni REF</th>
            <th>LOT/serijska/EDI</th>
            <th>Stanje (REF)</th>
            <th>Stanje (LOT)</th>
            <th>Privzeta skupina</th>
          </tr>
        </thead>
        <tfoot>

        </tfoot>
        <tbody>
            <tr style="background-color: rgb(255, 255, 0);">
              <td data-id="iROW_NUMBER" style="background-color: rgb(255, 255, 0);">1</td>
              <td data-id="cPROD_NME" style="background-color: rgb(255, 255, 0);">Kortikalni 2.0/14mm (zlati)</td>
              <td data-id="cPROD_DCD" style="background-color: rgb(255, 255, 0);">401.364</td>
              <td data-id="cPRSE_DCD" style="background-color: rgb(255, 255, 0);">8036572</td>
              <td data-id="iPROD_QUA_QUA" style="background-color: rgb(255, 255, 0);">6</td>
              <td data-id="cPRSS_QUA_QUA" style="background-color: rgb(255, 255, 0);">3</td>
              <td data-id="cPRGR_NME" style="background-color: rgb(255, 255, 0);">Stopalo - SYNTHES</td>
            </tr>
            <tr style="background-color: rgb(255, 255, 0);">
              <td data-id="iROW_NUMBER" style="background-color: rgb(255, 255, 0);">2</td>
              <td data-id="cPROD_NME" style="background-color: rgb(255, 255, 0);">Kortikalni 2.0/14mm (zlati)</td>
              <td data-id="cPROD_DCD" style="background-color: rgb(255, 255, 0);">401.364</td>
              <td data-id="cPRSE_DCD" style="background-color: rgb(255, 255, 0);">8327937</td>
              <td data-id="iPROD_QUA_QUA" style="background-color: rgb(255, 255, 0);">6</td>
              <td data-id="cPRSS_QUA_QUA" style="background-color: rgb(255, 255, 0);">1</td>
              <td data-id="cPRGR_NME" style="background-color: rgb(255, 255, 0);">Stopalo - SYNTHES</td>
            </tr>
            <tr>
              <td data-id="iROW_NUMBER">3</td>
              <td data-id="cPROD_NME">Kortikalni 2.0/14mm (zlati)</td>
              <td data-id="cPROD_DCD">401.364</td>
              <td data-id="cPRSE_DCD">9572333</td>
              <td data-id="iPROD_QUA_QUA">6</td>
              <td data-id="cPRSS_QUA_QUA">2</td>
              <td data-id="cPRGR_NME">Stopalo - SYNTHES</td>
            </tr>
        </tbody>
      </table>

<br/>
<br/>
<button id="btnSearch">Search</button>

【讨论】:

    【解决方案3】:

    你使用的字符串在 jQuery 和 HTML 上应该是一样的。

    在您的 jQuery 中,您忘记了 分号 ; 和一个 空格 :

    试试这个字符串。

    #tbl1 tr[style='background-color: rgb(255, 255, 0);']
    

    无论如何,我不建议你这样使用内联样式。

    【讨论】:

    • 这对你有用吗?我试图添加;和 : 之后的空格,但它是一样的。
    • 是的,它在 Chrome 上为我工作。查看我的分叉代码:codepen.io/anon/pen/evxqXO
    【解决方案4】:

    使用 jQuery .filter() 过滤选定的tr 并仅选择具有目标背景颜色的tr。在函数回调中使用this.style.backgroundColor 获取tr 的background-color 并检查是否等于rgb(255, 255, 0)

    $("#btnSearch").click(function(){
      var trs = $("#tbl1 tr").filter(function(){
        return this.style.backgroundColor == "rgb(255, 255, 0)";
      });
    });
    

    请注意,在单击后的底部示例中,目标tr 的颜色更改为red

    $("#btnSearch").click(function(){
      $("#tbl1 tr").filter(function(){
        return this.style.backgroundColor == "rgb(255, 255, 0)";
      }).css("color", "red");
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <table id='tbl1' class="table table-hover table-bordered">
      <tr style="background-color: rgb(255, 255, 0);">
        <td>1</td><td>2</td><td>3</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255);">
        <td>1</td><td>2</td><td>3</td>
      </tr>
      <tr style="background-color: rgb(0, 0, 0);">
        <td>1</td><td>2</td><td>3</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 0);">
        <td>1</td><td>2</td><td>3</td>
      </tr>
      <tr>
       <td>1</td><td>2</td><td>3</td>
      </tr>
    </table>
    <button id="btnSearch">Search</button>

    检查demo中完整html上的代码结果

    【讨论】:

      【解决方案5】:

      试试这个;

      $('#tbl1 tr').filter(function() {
           return $(this).css('background-color') == 'rgb(255, 255, 0)';
      })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-11
        • 1970-01-01
        • 2012-05-11
        • 2017-06-11
        • 2018-02-03
        • 1970-01-01
        相关资源
        最近更新 更多