jQuery模板问题,如何从另一个tmpl输出tmpl输出(带有事件挂钩)

时间:2011-08-31 13:27:50

标签: jquery jquery-templates

我正在开发一个在浏览器中运行的复杂应用程序,但为了简化我遇到的问题,我创建了一个非常简单的示例来向您展示问题。请不要通过告诉我更改整个设置来回答这个问题。

我真正需要的是知道是否可以按照我尝试的方式完成,如果答案是否定的,我会回去找出要做的事情。

Link to zip with example

我正在尝试使用“自上而下”渲染方法,并从最小元素开始,渲染,将结果返回到父级,然后渲染父级(使用从子级返回的内容)。

/* Render method on Child object*/
Render: function () {
    var renderedContent = $("#ChildTemplate").tmpl({ "Name": this.Name });
    renderedContent.find(".clickable").click(function (e) { console.log("child"); return false; });
    return renderedContent;
}

如果我使用了renderContent并将其附加到任何DOM对象,则click事件将触发我的代码,但是当我将此内容推回到模板中时,我无法弄清楚如何使其工作(如果它是可能的)。父级的render方法:

Render: function () {
    var subContent = [];
    $.each(this.children, function (index, element) {
        subContent[subContent.length] = { "Content": element.Render() };
    });

    var renderedContent = $("#ParentTemplate").tmpl({ "Name": this.Name, "SubContent": subContent });
    renderedContent.find(".parentclick").click(function (e) { console.log("parent"); return false; });
    return renderedContent;
}

现在,父项上的点击事件有效,但子项无效。我最好的猜测是,这一行是破坏​​事件钩子的原因:

        <tr><td>{{html Content.html()}}</td></tr>

但有没有办法将jQuery对象(我假设是从tmpl方法返回)放入输出而不会丢失事件挂钩?

不幸的是,在我完成渲染后尝试连接事件不是一个选项,因为最终结果将包含数百个元素,我需要将它们连接到正确的“父”对象。

0 个答案:

没有答案