1

我正在使用 jQuery UI 自动完成插件中的 jQuery 模板,以便更好地控制自动完成结果的呈现方式。我想做的是突出显示结果中的输入。http://jqueryui.com/demos/autocomplete/combobox.html是我想要实现的一个很好的例子,只是我想使用 jQuery 模板来做到这一点。

到目前为止,这是我所拥有的(抽象出一些自动完成代码):

<script>
  // in this example, this.term == 'dog'
  $('#tmplProject').tmpl({text: "All About Dogs"},
    {term: this.term, highlight: function(text) {
      return text.replace(new RegExp(
                    "(?![^&;]+;)(?!<[^<>]*)(" +
                    $.ui.autocomplete.escapeRegex(this.term) +
                    ")(?![^<>]*>)(?![^&;]+;)", "gi"
                  ), "<strong>$1</strong>" );
  }}) )
</script>
<script id="tmplProject" type="text/x-jquery-tmpl">
  some other markup goes here. ${$item.highlight(name)}
</script>

问题是,该<strong>元素正在转义,并All about <strong>Dog</strong>s显示在浏览器中。但这种说法是有道理的,因为模板应该是标记所在的位置,而不是高亮方法。那么如何将 highlight 方法的逻辑与生成的标记分开呢?

4

1 回答 1

2

{{html}}标签对你有用吗 ?

<script id="tmplProject" type="text/x-jquery-tmpl">
  some other markup goes here. {{html $item.highlight(name) }}
</script>

像这样:http: //jsfiddle.net/rniemeyer/baY3k/

于 2011-02-11T17:27:37.227 回答