Подтвердить что ты не робот

Что-то подобное gsub существует в javascript?

Есть ли способ сделать что-то похожее на ruby ​​gsub в javascript? У меня есть локальный html файл, который я хочу обработать и заменить определенные переменные шаблона контентом, но я не могу понять, как заменить переменные шаблона новым контентом. Html содержит фрагменты, как показано ниже:

<div id="content">
    <h1>{{title}}</h1>
    {{content}}
</div>

Теперь, если я обертываю все переменные шаблона в названном div, я могу использовать что-то вроде jQuery replaceAll для замены переменной шаблона содержимым, но я не могу понять, как это сделать, не обертывая каждую переменную в div.

Я просто хочу сделать что-то вроде $('document'). gsub ( "{{title}}", "Я - заголовок" ).

У кого-нибудь есть идеи?

Спасибо за вашу помощь!

4b9b3361

Ответ 1

Вы можете получить доступ к необработанному HTML через свойство DOM element innerHTML или использовать свойство JQuery html, а затем выполнить замену:

var html = $(document).html();
$(document).html(html.replace('{{title}}', 'I am a title');

EDIT:

Как отметил Антти Хаапала, замена всего документа HTML может иметь побочные эффекты, с которыми вы не хотите иметь дело, например перезаряжаемые сценарии. Таким образом, перед выполнением подстановки вы должны перейти к самому определенному элементу DOM, т.е.:

var element = $('#content');
var html = element.html();
element.html(html.replace('{{title}}', 'I am a title');

Ответ 2

Если другие искали эквивалент gsub в целом, это заменяет только первое совпадение:

"aa".replace("a", "b") // "ba"

//g заменяет все совпадения:

"aa".replace(/a/g, "b") // "bb"
"aa".replace(new RegExp("a", "g"), "b"); // "bb"

Ответ 3

Ну, вы можете использовать String.replace с регулярным выражением, но на самом деле вы можете использовать jQuery шаблоны.

http://api.jquery.com/category/plugins/templates/

Ответ 4

Недавно я использовал Handlebars, чтобы взять атрибут данных (шаблон) из таблицы и ввести другое значение (идентификатор записи) из одной из его строки:

// data-row-url="http://example.com/people/{{id}}"

var table = $(this).closest('.data_grid table');                        

if(table.attr('data-row-url')) {                                        
    var record_id = $(this).data('record-id')                           
    var show_url_template = table.data('row-url');                      
    var url_template = Handlebars.compile(show_url_template)            
    var url = url_template({ id: record_id });                          
    $.getScript(url);                                                   
}  

Для контекста этот код запускается изнутри события onclick для элементов таблицы tr и извлекает кликовую запись через ajax.

Ответ 5

Я считаю, что это может быть шаблон усов. Возможно, вы захотите проверить mustache.js. Я думаю, вы могли бы скомпилировать это для JS.