jQuery可重用元素和子访问

时间:2015-08-20 11:23:53

标签: javascript jquery html html5

我正在创建一个我需要创建可重用元素的网站。这是一个例子:

<div class="item">
    <div class="title"></div>
    <div class="description"></div>
</div>

所以 - 在for循环中我想多次克隆这个元素并更改标题和描述内容。

出于这个原因,我在我的页面中将我的模板放置在这样的隐藏元素中:

<div id="templates" style="display:none">    
    <div class="item">
        <div class="title"></div>
        <div class="description"></div>
    </div>
</div>

我不确定这是在页面中创建可重用元素的好方法。这是我能想到的。

所以我在页面加载时得到我的模板元素:

var templates = $("templates");

在我想要重用的每个元素的这一点之后(当我需要重用时),我这样做:

var item = templates.find(".item");

那么我将如何继续创建我的新元素并改变他们的标题和描述?我已经尝试了以下内容,#container div是所有生成元素的主要容器对象:

$("#container").html(item.clone().html())

但这只是给了我一个对象。我根本无法理解如何继续这样做。

任何评论都表示赞赏 - 如果这是一个糟糕的方法,也请赐教,我很想知道一个好的。

感谢。

2 个答案:

答案 0 :(得分:2)

这是你如何使用你的模板方法,抓取一个克隆,并通过类更改其元素,然后将该克隆添加到body元素

$("#clone").click(function () {
    var clone = $("#templates .item").clone()
    $(".title", clone).html("Title")
    $(".description", clone).html("Desc")
    $("body").append(clone)
})

我不担心性能,直到你需要运行数万次

答案 1 :(得分:0)

我觉得在文档中写入隐藏的内容,永远不会显示不正确。

相反,你可以使用像这样的一些模板框架或模板插件 https://github.com/codepb/jquery-template

您需要为这些模板创建html文件并提供填充模板的对象

$("#template-container").loadTemplate("Templates/template.html",
    {
        author: 'Joe Bloggs',
        date: '25th May 2013',
        authorPicture: 'Authors/JoeBloggs.jpg',
        post: 'This is the contents of my post'
    });

template.html

<script type="text/html" id="template">
    <div data-content="author"></div>
    <div data-content="date"></div>
    <img data-src="authorPicture" data-alt="author"/>
    <div data-content="post"></div>
</script>