首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何递归调用/运行jQuery嵌套模板

如何递归调用/运行jQuery嵌套模板
EN

Stack Overflow用户
提问于 2011-06-22 01:32:24
回答 1查看 1.6K关注 0票数 2

好吧,这有点像json对象和jquery模板的启动。我想知道如何做得更深。问题是我很懒,想让代码为我做工作.

Q:>如何递归地调用jQuery模板.

拿这个json对象:

代码语言:javascript
复制
var Links =
[{"Name":"Home","NiceUrl":"/home/","Children":null},
 {"Name":"MX-8","NiceUrl":"/mx-8/","Children":null},
 {"Name":"Quiz","NiceUrl":"/quiz/","Children":
      [{"Name":"Thank you","NiceUrl":"/quiz/thank-you/","Children":
         [{"Name":"Can't get here","NiceUrl":"/URL/","Children":null}]
     }]
 }];

我可以使用以下模板轻松获得"Quiz“及其子类”谢谢“:

代码语言:javascript
复制
<script id="itemTemplate" type="text/x-jquery-tmpl">
    <li><a href="${NiceUrl}">${Name}</a>
        {{tmpl($data) "#childTemplate"}}
    </li>
</script>
<script id="childTemplate" type="text/html">
    <ul>{{each Children}}<li><a href="${NiceUrl}">${Name}</a></li>{{/each}}</ul>
</script>

还使用html和调用来替换它:

代码语言:javascript
复制
<script type="text/javascript">
    $("#itemTemplate").tmpl(Links).appendTo("#SiteMapHolder");
</script>
<ul id="SiteMapHolder">
    <%--jQuery Template will replace this empty space--%>
</ul>

我尝试将第二个模板的类型设置为“text/”,并调用第三个模板,但传递的数据似乎与调用它的父模板相同。

因此,对于所有具有更高智力和经验的存在,我,告诉我如何懒惰并递归地调用jQuery模板?

PS:对不起,这不在jsFiddle里。它不喜欢我的脚本标签。:(

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-22 01:38:08

我认为您只需要检查是否存在子项目,并使用子元素作为数据对同一项模板进行递归调用。您可以有条件地添加ul标记。我的意思是:http://jsfiddle.net/bernardchen1/SK2c6/

我使用的模板本身如下所示:

代码语言:javascript
复制
<script id="itemTemplate" type="text/x-jquery-tmpl">
<li><a href="${NiceUrl}">${Name}</a>
    {{if Children}}
    <ul>
    {{tmpl(Children) "#itemTemplate"}}
    </ul>
    {{/if}}
</li>

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6433936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档