繁体   English   中英

动态加载的usercontrol中控件的click事件未在.js文件中触发

[英]Click event of control in dynamically loaded usercontrol not firing in .js file

我在更新面板中有一个带占位符的aspx页面。 根据页面上下拉菜单的值,用户控件将附加到占位符。 用户控件正确加载,但似乎未触发按钮的click事件。 我在.js文件中放置了一个断点,但是它从未进入js函数。 不确定是否已加载JavaScript。

aspx页面:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Page.aspx.cs" Inherits="UserControlTest.Page" %>
<%@ Register Src="~/TestUserControl.ascx" TagPrefix="uc1" TagName="TestUserControl" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <script src="Scripts/testUserControl.js"></script>
    <title></title>
</head>
<body>

    <form id="form1" runat="server">
    <asp:ScriptManager ID="sm1" runat="server"></asp:ScriptManager>
    <div>
        <h4>This is the page</h4>
        <div class="form-group">
            <label class="col-md-5 control-label" for="selUserControl">Enquiry Type &nbsp;<span class="glyphicon glyphicon-asterisk pull-right" style="color:red"></span> </label>
            <div class="col-md-7">
                <asp:DropDownList ID="selUserControl" CssClass="form-control reqrd" runat="server" OnSelectedIndexChanged="selUserControl_SelectedIndexChanged" AutoPostBack="True"></asp:DropDownList>
            </div>
        </div>
        <div id="divUserControl">
            <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                <ContentTemplate>
                    <asp:PlaceHolder runat="server" ID="phUserControl" />
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="selUserControl" />
                </Triggers>
            </asp:UpdatePanel>
        </div> 
    </div>
    </form>
</body>
</html>

aspx.cs页面:

protected void selUserControl_SelectedIndexChanged(object sender, EventArgs e)
    {
        TestUserControl uc = (TestUserControl)LoadControl("~/TestUserControl.ascx");
        uc.ID = "ucUserControl";
        phUserControl.Controls.Add(uc);
    }

.ascx页面:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TestUserControl.ascx.cs" Inherits="UserControlTest.TestUserControl" %>

<div>
    <h4>This is the User Control</h4>
</div>
<div class="form-group">
    <div class="col-md-7">
        <input type="button" id="btnPress" class="btn" value="Press!" />
    </div>
</div>

.js文件:

$(document).ready(function () {

    $("#btnPress").click(function () {
        alert('Hi There from User Control');

    });
});

在运行js时,页面上#btnPress不存在(或者至少原始#btnPress不存在。@ DelightedD0D是正确的。我会研究使用事件委托并将它们附加到您的文档中。您可以根据需要附加/分离尽可能多的#btnPress方式,您的点击将冒泡记录#btnPress处理。

$(document).on('click', '#btnPress', function(){
  alert('Hi There from User Control');
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM