我有一个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);
};
});
答案 0 :(得分:1)
这将返回一个jQuery对象:
$("#message:contains('" + searchString + "')")
JavaScript中的对象始终是" truthy,"所以你的if
语句将一直运行。
相反,您可以在选择器本身上使用each
函数。
<强>更新强>
您无法在textarea上使用:contains
。相反,您可以使用val()在textarea indexOf()中搜索字符串。
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;