Как я могу отобразить шаблон, например, mustache.js, используя данные, возвращаемые селектором jQuery? Вот так:
var imgs = $('img'),
arrayOfImgs = { img : $.makeArray(imgs) },
template = "{{#img}} <span> {{.}} </span> {{/img}}",
html = Mustache.render(template, arrayOfImgs);
$('.portfolio').html(html);
Это не работает, поскольку $.makeArray(imgs)
возвращает массив объектов img
, есть ли работа вокруг?
Вам нужно будет вернуть HTML как строку, что легко сделать с помощью $.map и вернуть this.outerHTML
var imgs = $('img'),
arrayOfImgs = $.map(imgs, function(el) { return el.outerHTML; }),
template = "{{#img}} <span> {{.}} </span> {{/img}}",
html = Mustache.render(template, arrayOfImgs);
$('.portfolio').html(html);
Просто используйте var imgs = $('img')
. Это уже массив тегов img html. Я не знаю, как работает Усы.
$.map
и вернутьthis.outerHTML
, но, как правило, это плохая идея, и просто использованиеwrap()
кажется более подходящим?