【问题标题】:jQuery Templates - Replace DIV contentjQuery 模板 - 替换 DIV 内容
【发布时间】:2011-06-20 20:40:54
【问题描述】:

所以我正在使用 jQuery 模板并在我的应用程序中运行以下代码:

@using (Html.BeginForm())
    {
        @Html.DropDownList("StateList",
                            Model.States,
                            "< Select >"
                            )

        <div id="designCenters"></div>

        <script id="designCenterTemplate" type="text/html">
            <p><li>${Name}</li></p>
        </script>           
    }

    <script language="javascript" type="text/javascript">
        $("#StateList").change(function () {
            $.getJSON("/api/designcentersbystate/" + $(this).val(), 
              function (data) { 
                  $("#designCenterTemplate").tmpl(data).appendTo("#designCenters")
               });
        });
    </script>

由于我在模板函数的回调函数参数中调用了.appendTo,显然设计中心列表被添加到列表中。我的目标是用模板化结果替换 &lt;div id="designCenters"&gt; 中的内容。

寻找最有效的方法。

谢谢。

【问题讨论】:

    标签: jquery asp.net-mvc templates


    【解决方案1】:

    像这样改变成功函数:

    function (data) { 
        $("#designCenters").html($("#designCenterTemplate").tmpl(data))
    }
    

    或者您可以每次都清空容器。

    $("#designCenters").empty();
    $("#designCenterTemplate").tmpl(data).appendTo("#designCenters");
    

    【讨论】:

      【解决方案2】:

      您可以像这样替换元素中的 html:

      $("#designCenters").html(YOUR HTML HERE);
      

      【讨论】:

      • 我尝试将模板代码更改为: $("#designCenterTemplate").tmpl(data).html("#designCenters") 但除了导致它完全停止显示之外没有任何效果模板化数据(没有 JS 错误)。对 jQuery 来说有点新,所以这可能是我调用它的方式的一个基本问题。
      • 您只是错误地使用了 html 方法。我的版本是正确的。 Josiash 的答案与我的相似,但更适合您的场景
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多