icanhaz/mustache loop (iterate through elements) js error

时光怂恿深爱的人放手 提交于 2019-12-29 08:24:07

问题


I'm trying to get icanhaz/mustache loop working, as defined in this answer and I'm getting following error in browser console:

Uncaught Error: Syntax error, unrecognized expression: <option value="1">First</option>
                        <option value="2">Second</option>

Don't know why. I've just managed to spot that this is the line that causes the problem:

ich.myTemplate(listOfStuff);

This is my entire code:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/tr/html4/transitional.dtd">
<html>
    <head>
        <title>icanhaz.js demo</title>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>
        <script type="text/javascript" src="https://raw.github.com/HenrikJoreteg/ICanHaz.js/master/ICanHaz.js"></script>
    </head>
    <body>

    <select id="mySelectBox">
    </select>

    <script id="myTemplate" type="text/html">
        {{#stuff}}
        <option value="{{key}}">{{desc}}</option>
        {{/stuff}}
    </script>

    <script>
        $(document).ready( function() {

            var listOfStuff = {stuff: [ 
                    {key: "1", desc: "First"},
                    {key: "2", desc: "Second"}
                ]};
            var x = ich.myTemplate(listOfStuff);
            $("#mySelectBox").append(x);
        });
    </script>

</body>
</html>

Thanks for any suggestions!


回答1:


Finally I found the error. It was the jquery version problem - 1.9.1 was returning the error and 1.8.3 was not. Compare those demos:

  • http://tinyurl.com/cb48wb9 - jquery 1.9.1
  • http://tinyurl.com/bnf4xld - jquery 1.8.3

for the 1.9.1 version, look at the javascript console.

Moreover, if I changed

<script id="myTemplate" type="text/html">
    {{#stuff}}
    <option value="{{key}}">{{desc}}</option>
    {{/stuff}}
</script>

to

<script id="myTemplate" type="text/html">
    {{#stuff}}<option value="{{key}}">{{desc}}</option>{{/stuff}}
</script>

for 1.9.1, it also worked fine.


edit: this is an opened issue on icanhaz/github. If you wish, please help to fix this bug!




回答2:


var listOfStuff = {stuff: [ 
                  {key: "1", desc: "First"},
                  {key: "2", desc: "Second"}
              ]};
var html = ich.myTemplate(listOfStuff);
$("#mySelectBox").append($(html));

Try that?



来源:https://stackoverflow.com/questions/15650487/icanhaz-mustache-loop-iterate-through-elements-js-error

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!