【问题标题】:Highlight text in text area, from moveover on DataTable突出显示文本区域中的文本,来自 DataTable 上的移动
【发布时间】:2014-12-12 14:04:23
【问题描述】:

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

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

这是一个美丽的地方

我的 Datatable 行包含:

这是一个地方

那么需要突出显示文本区域部分。

我使用了几个插件,但它们似乎只适合单个单词匹配,而我需要进行句子搜索,如果你愿意的话。

我的代码是:

  $('#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);
        };

  });

【问题讨论】:

    标签: jquery


    【解决方案1】:

    这会返回一个 jQuery 对象:

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

    JavaScript 中的对象始终是“真实的”,因此您的 if 语句将始终运行。

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

    更新

    您不能在文本区域上使用:contains。相反,您可以使用 indexOf() 在 textarea 的 val() 中搜索字符串。

    var searchString= 'is a test';
    
    $("div:contains('" + searchString + "')").each(function() {
      $(this).css('background', 'yellow');
    });
    
    if($('#message').val().indexOf(searchString) >- 1) {
      $('#message').css('background', 'yellow');
    }
    <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>

    【讨论】:

    • 是的,在 div 上搜索不是问题。文本在文本区域内,我根本无法让它工作。
    • 哦!抱歉,我没有将“文本区域”与 textarea 对象相关联。我已经更新了我的答案。
    • 好的,所以这似乎将整个 TextArea 设置为黄色。不是匹配的字符串。
    • 在您的示例中,文本区域也完全是黄色的。在我的表格中,我想将鼠标悬停在一些文本上,并突出显示文本区域中的匹配文本,并且只有该文本
    • 您有几个选择: 1) 使用 contenteditable div 而不是 textarea; 2)在textarea后面放置一个div并设置样式:stackoverflow.com/questions/12005057/…
    猜你喜欢
    • 2010-09-13
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    相关资源
    最近更新 更多