【问题标题】:How to make matching chars bold+red when using jQuery Tokeninput使用jQuery Tokeninput时如何使匹配的字符变为粗体+红色
【发布时间】:2013-01-30 22:01:32
【问题描述】:

我正在使用http://loopj.com/jquery-tokeninput/demo.html#formatting

我想让匹配的字符也变成红色,但找不到他们拥有的 CSS 或 Javascript。

他们的项目在GitHub

【问题讨论】:

  • 您应该使用 Chrome 开发工具(内置于 chrome)或 Firefox Firebug 扩展。您将能够右键单击粗体文本和“检查元素”。这应该会显示它周围的 span 标签和它们使用的类,以及应用于它的 CSS 样式。
  • 我试过了,但我无法捕捉到元素。
  • 如果 GUI 妨碍您右键单击它(我认为这就是您的意思),您可以查看页面源代码并找出名称在哪里以及它有什么标签/类.
  • 我已经这样做了将近 1 小时但没有运气,这就是我发布问题的原因。

标签: javascript jquery html css jquery-tokeninput


【解决方案1】:

使用 chrome 开发者工具,我发现 jquery-tokeninput 正在格式化搜索结果,如下所示:

<ul style="display: block; overflow: hidden;">
    <li class="token-input-dropdown-item2-facebook">Trad<b>in</b>g Spouses</li>
    <li class="token-input-dropdown-item-facebook">T<b>in</b> Man</li>
</ul>

所以它没有使用 css 类来突出显示匹配的字符,而是手动将这些字符放入 &lt;b&gt; 标记中。在 javascript 源文件中快速搜索后,我能够找到这个函数:

// Highlight the query part of the search term
function highlight_term(value, term) {
    return value.replace(
      new RegExp(
        "(?![^&;]+;)(?!<[^<>]*)(" + regexp_escape(term) + ")(?![^<>]*>)(?![^&;]+;)",
        "gi"
      ), function(match, p1) {
        return "<b>" + escapeHTML(p1) + "</b>";
      }
    );
}

因此,我想只需对其进行修改即可自定义匹配的字符样式。例如,您可以将返回字符串更改为:

return '<b class="match">' + escapeHTML(p1) + '</b>';

并将您的样式应用到 b.match css 类。

【讨论】:

  • 我正在使用 resultsFormatter,它会覆盖所有的 HTML:` resultsFormatter: function(item){ return "
  • " + "" + "
    " + item.first_name + " " + item.last_name + "
    " },`我无法实现你所说的。
  • 这是我在回答中建议的工作小提琴:jsfiddle.net/8dN5y。只需在输入框中输入 red 即可查看结果。
  • 我已经更新了你的小提琴以包括我的 resultFormatter 并且它不起作用jsfiddle.net/8dN5y/3
  • 我使用 tokeninput 网站示例(使用 resultFormatter 的示例)制作了另一个 jsfiddle,它运行良好:jsfiddle.net/8dN5y/7。输入“Alex”查看结果
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签