从DataTable上的移动突出显示文本区域中的文本

时间:2014-12-12 14:04:23

标签: jquery

我有一个JQuery数据表,它显示一个搜索字符串列。当用户将鼠标悬停在该行上时,我想突出显示文本区域中的相应文本。

例如,如果文本区域包含以下内容:

  

这是一个美丽的地方

我的数据表行包含:

  

这是一个地方

然后需要突出显示文本区域部分。

我使用了几个插件,但他们似乎只是为了单字匹配而提供服务,而如果你愿意,我需要进行句子搜索。

我的代码是:

  $('#tblHitData tbody').on('mouseover', 'td', function() {

        var data = oHitData.row($(this).parents('tr')).data();

        var searchString = data['SearchString'];

        if ($("#message:contains('" + searchString + "')")) {
            $('#message').highlight(searchString);
        };

  });

1 个答案:

答案 0 :(得分:1)

这将返回一个jQuery对象:

$("#message:contains('" + searchString + "')")

JavaScript中的对象始终是" truthy,"所以你的if语句将一直运行。

相反,您可以在选择器本身上使用each函数。

<强>更新

您无法在textarea上使用:contains。相反,您可以使用val()在textarea indexOf()中搜索字符串。

&#13;
&#13;
var searchString= 'is a test';

$("div:contains('" + searchString + "')").each(function() {
  $(this).css('background', 'yellow');
});

if($('#message').val().indexOf(searchString) >- 1) {
  $('#message').css('background', 'yellow');
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>this is a test</div>
<div>this might possibly be a test</div>
<div>let's give lois a test</div>
<div>this is most definitely a test</div>
<textarea id="message">
  this is a test
</textarea>
&#13;
&#13;
&#13;