Включение разметки в функцию, вызываемую из шаблона jquery? - PullRequest
1 голос
/ 11 февраля 2011

Я использую шаблоны jQuery из плагина jQuery UI Autocomplete, чтобы лучше контролировать процесс отображения результатов автозаполнения.То, что я хотел бы сделать, это выделить входные данные в результате.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.но этот вид имеет смысл, потому что шаблон должен быть там, где находится разметка, а не метод выделения.Так как же отделить логику метода подсветки от создаваемой разметки?

1 Ответ

2 голосов
/ 11 февраля 2011

Работает ли у вас тег {{html}} ?

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

Как это: http://jsfiddle.net/rniemeyer/baY3k/

...