JSFiddle - React, Tailwind, and code Playground

HTML

<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.3/css/bootstrap.css">
<table id="table" class="table">
  <tr data-highlight="2014-01-25 14:00">
    <td>2014-01-25 14:00</td>
    <td>Item1</td>
    <td>Data1</td>
  </tr>
  <tr data-highlight="2014-01-25 14:00">
    <td>2014-01-25 14:00</td>
    <td>Item2</td>
    <td>Data2</td>
  </tr>
  <tr data-highlight="2014-01-25 14:10">
    <td>2014-01-25 14:10</td>
    <td>Item3</td>
    <td>Data1</td>
  </tr>
  <tr data-highlight="2014-01-25 14:10">
    <td>2014-01-25 14:10</td>
    <td>Item4</td>
    <td>Data2</td>
  </tr>
    <tr data-highlight="2014-01-25 14:00">
    <td>2014-01-25 14:00</td>
    <td>Item2</td>
    <td>Data5</td>
  </tr>
</table>

CSS

.highlight td {
    background-color: rgba(255, 255, 150, 0.7) !important;
}

JavaScript

!function(t,e){"object"==typeof module?module.exports=e(require("jquery")):"function"==typeof t.define?define(["jquery"],e):e(t.jQuery)}(this,function(t){"use strict";function e(t){this.settings=t,this.$parent=t.$parent,this.$nodes=t.$nodes,this.findSelector=n.replace(/{{attr}}/,t.attr),this.$nodes.on(t.on,this.handle(this,t.onmatch)).on(t.off,this.handle(this,t.onunmatch))}var n='[{{attr}}="{{search}}"]',r={on:"mouseenter",off:"mouseleave",attr:"data-matcher",onmatch:"match",onunmatch:"unmatch"};return e.prototype.handle=function(e,n){return function(){var r=t(this).attr(e.settings.attr),a=e.$parent.find(e.findSelector.replace(/{{search}}/,r));a.length&&e.$parent.trigger(n,[a])}},t.fn.attrMatcher=function(n){if(!this.length)return this;var a=t.extend(r,n||{});return t.extend(a,{$parent:a.parent instanceof t?a.parent:this.parent(),$nodes:this}),new e(a),this},t});

// Start the plugin
$('#table')
  .on('match', function(e, $matches) {
    $matches.addClass('highlight');
  })
  .on('unmatch', function(e, $matches) {
    $matches.removeClass('highlight');
  })
  .find('tr')
  .attrMatcher({
     attr: 'data-highlight'
  });