jQuery + client-side template = "Syntax error, unrecognized expression"
Turns out string starting with a newline (or anything other than "<") is not considered HTML string in jQuery 1.9
http://stage.jquery.com/upgrade-guide/1.9/#jquery-htmlstring-versus-jquery-selectorstring
I guess your template is starting with a space or a tab.
You can use jQuery like that:
$($.parseHtml(modal_template_html)[1]);
or parse the string to remove spaces of the beginning:
$(modal_template_html.replace(/^[ \t]+/gm, ''));
EugeneXa mentioned it in a comment, but it deserves to be an answer:
var template = $("#modal_template").html().trim();
This trims the offending whitespace from the beginning of the string. I used it with Mustache, like so:
var markup = Mustache.render(template, data);$(markup).appendTo(container);