[英]JavaScript on jQuery created code never gets called
这是我在ASP.NET MVC中的观点。
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Administration.Master" Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="HeadContent" runat="server">
<script type="text/javascript">
var ddlContentTypes;
$(document).ready(function () {
ddlContentTypes = $("#ContentTypes");
ddlContentTypes.bind("change", loadCreate);
loadCreate();
});
function loadCreate() {
var typeId = $("#ContentTypes option:selected").val();
$.get('~/' + typeId + '/Create', function (data) {
$("#CreateForm").html(data);
});
$("fieldset input").each(function (index, item) {
$(item).attr("disabled", true);
});
}
</script>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server">
<h2>
<%=Resources.Localize.CreateWidget %></h2>
<p>
<% Html.RenderPartial("ContentTypeSelector"); %></p>
<div id="CreateForm">
</div>
</asp:Content>
如您所见,它将加载一些HTML(实际上是用户控件)并将其添加到CreateForm div中。 这实际上很好。
问题是
$("fieldset input").each(function (index, item) {
$(item).attr("disabled", true);
});
永远不会运行。 fieldset标签在响应中,因此您在此处看不到它,但它在那里-一切都返回正常(我用Firebug检查过)。
为什么以上两行JS永远不会运行或没有效果?
调用此代码时,fieldset标签不存在。 尝试将这段代码移到成功函数的内部,它可能会起作用。
function loadCreate() {
var typeId = $("#ContentTypes option:selected").val();
$.get('~/' + typeId + '/Create', function (data) {
$("#CreateForm").html(data);
$("fieldset input").each(function (index, item) {
$(item).attr("disabled", true);
});
});
}
我认为您的问题在这里:
$.get('~/' + typeId + '/Create', function (data) {
$("#CreateForm").html(data);
});
应该:
$.get("<%=ResolveUrl("~/") %>" + typeId + "/Create", function (data) {
$("#CreateForm").html(data); // thanks Peter
$("fieldset input").attr("disabled", "disabled"); // thanks Nick
});
那可能是抛出一个js异常,而且它从未进入fieldset循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.