gpt4 book ai didi

javascript - 动态加载的用户控件中控件的单击事件未在 .js 文件中触发

转载 作者:行者123 更新时间:2023-12-03 10:41:36 25 4
gpt4 key购买 nike

我有一个 aspx 页面,更新面板中有一个占位符。用户控件附加到占位符,具体取决于页面上下拉列表的值。用户控件正确加载,但按钮的单击事件似乎未触发。我在 .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不存在) t。@DelightedD0D 是对的。我会考虑使用事件委托(delegate)并将它们附加到您的文档中。这样您就可以根据需要附加/分离任意数量的 #btnPress,并且您的点击将冒泡记录并由委托(delegate)处理。

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

关于javascript - 动态加载的用户控件中控件的单击事件未在 .js 文件中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28757813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com