代码之家  ›  专栏  ›  技术社区  ›  Artur Carvalho

使用jquery突出显示特定位置的文本

  •  2
  • Artur Carvalho  · 技术社区  · 15 年前

    我想突出显示特定位置的文本。像这样: highlight with jquery 但它只突出显示位置中的单词 n .

    例如,只突出显示 第二 “你好,你好,你好”

    谢谢你

    1 回复  |  直到 15 年前
        1
  •  3
  •   ironsam    15 年前

    这里有一种方法可以做到这一点,但它不是一些简洁而巧妙的jquery——主要是直接的javascript。

    <div id="content">hello, hello, hello</div>
    
    <script type="text/javascript">
        $(document).ready(function() {
            var searchKey = "hello"; // text to search for in element
            var elementToSearch = $("#content");  // jquery element with text to search for matches
            var instanceToHighlight = 2; // 1-based;  e.g. 3 = third instance found
            highlightText(searchKey, elementToSearch, instanceToHighlight);
        });
    
        function highlightText(searchKey, elementToSearch, instanceToHighlight) {
            var content = elementToSearch.html();
            var highlightIndex = instanceToHighlight - 1;
            var lastIndex = -1;
            var i = 0;
            // get the index in the overall text of the instance to highlight
            while (i <= highlightIndex) {
                lastIndex = content.indexOf(searchKey, lastIndex + 1);
                i++;
            }
            var testValue = content.slice(lastIndex, lastIndex + searchKey.length);
            if (testValue !== searchKey) {
                return;  // didn't find an actual match
            }
            // chop up the content string so that the <span> tag can be wedged in around the text to highlight
            var contentBeforeHighlightText = content.substr(0, lastIndex);
            var contentAfterHighlightText = content.substr(lastIndex + searchKey.length, content.length - 1);
            highlightedText = "<span class=\"highlight\">" + searchKey + "</span>";
            content = contentBeforeHighlightText + highlightedText + contentAfterHighlightText;
            elementToSearch.html(content);
        }
    </script>