嵌套 jQuery 函数只触发一次
nested jQuery function only fires once
我正在加载文档准备就绪的功能。这一切都有效一次。该页面必须刷新才能再次工作。
$(document).ready(function () {
function resetChosen() {
$('.chosen').val(' ').trigger('chosen:updated');
alert('how many times will this work?');
}
$('#submitter').on('click', function (clickEvent) {
setTimeout(resetChosen, 500);
})
})
我基本上是在等待 500 毫秒后尝试使用 class.chosen 重置表单字段。警报用于调试。
有效,但只有一次。为什么?
谢谢!
更新:更多细节
我查看了 HTML,这个按钮在 UpdatePanel 中...
<form id ="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" EnablePageMethods="true" />
<asp:Timer ID="Timer1" runat="server" Interval="10000" OnTick="Timer1_Click" Enabled="true" />
<div class="col-10 topRow">
<div class="dispatchContainer">
<div class="col-1">
<div class="dispatchBtnBox" style="display: block">
<asp:UpdatePanel ID="UpdatePanel100" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="True">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="submitter" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:Button runat="server" ID="submitter" class="submitter" Text="Notify" OnClick="submitter_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
</div>
</div>
...大概是为了防止页面在单击时刷新。是否需要将此功能添加到页面请求管理器?
我已经更新了我的问题的标签。
谢谢!
更新 2:解决方案:
我在单击事件背后的代码中使用 ScriptManager 控件注册了一个脚本块。
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "submitterReset", "submitterReset", false);
谢谢!
如果需要,您可以删除很多 UpdatePanel 标记。一些设置是默认设置,因此您不需要它们。如果您想在页面上看到它们,那很好,就留下它们,但您可以删除很多东西,甚至是触发器 - 更新面板内导致回发的任何内容都会自动成为触发器。
默认值:更新模式="Conditional"; ChildrenAsTriggers="True".
<asp:UpdatePanel ID="UpdatePanel100" runat="server">
<ContentTemplate>
<asp:Button runat="server" ID="submitter" class="submitter"
Text="Notify" OnClick="submitter_Click" />
</ContentTemplate>
</asp:UpdatePanel>
[一次删除一个东西并进行测试,以确保万无一失。]
settimeout 运行一次代码。 Setinterval 是做什么工作的。我在这里为您重写了代码。试试看是否有帮助。
$(document).ready(function () {
function resetChosen() {
$('.chosen').val(' ').trigger('chosen:updated');
alert('how many times will this work?');
}
$('img').on('click', function (clickEvent) {`enter code here`
setInterval(function () {
resetChosen()
}, 500);
})
})
我查看了它的标记,发现我的控件位于 asp UpdatePanel 中。在我的 _Click 下使用 ScriptManager 注册脚本解决了这个问题。
我正在加载文档准备就绪的功能。这一切都有效一次。该页面必须刷新才能再次工作。
$(document).ready(function () {
function resetChosen() {
$('.chosen').val(' ').trigger('chosen:updated');
alert('how many times will this work?');
}
$('#submitter').on('click', function (clickEvent) {
setTimeout(resetChosen, 500);
})
})
我基本上是在等待 500 毫秒后尝试使用 class.chosen 重置表单字段。警报用于调试。
有效,但只有一次。为什么?
谢谢!
更新:更多细节
我查看了 HTML,这个按钮在 UpdatePanel 中...
<form id ="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" EnablePageMethods="true" />
<asp:Timer ID="Timer1" runat="server" Interval="10000" OnTick="Timer1_Click" Enabled="true" />
<div class="col-10 topRow">
<div class="dispatchContainer">
<div class="col-1">
<div class="dispatchBtnBox" style="display: block">
<asp:UpdatePanel ID="UpdatePanel100" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="True">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="submitter" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:Button runat="server" ID="submitter" class="submitter" Text="Notify" OnClick="submitter_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
</div>
</div>
...大概是为了防止页面在单击时刷新。是否需要将此功能添加到页面请求管理器?
我已经更新了我的问题的标签。
谢谢!
更新 2:解决方案:
我在单击事件背后的代码中使用 ScriptManager 控件注册了一个脚本块。
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "submitterReset", "submitterReset", false);
谢谢!
如果需要,您可以删除很多 UpdatePanel 标记。一些设置是默认设置,因此您不需要它们。如果您想在页面上看到它们,那很好,就留下它们,但您可以删除很多东西,甚至是触发器 - 更新面板内导致回发的任何内容都会自动成为触发器。
默认值:更新模式="Conditional"; ChildrenAsTriggers="True".
<asp:UpdatePanel ID="UpdatePanel100" runat="server">
<ContentTemplate>
<asp:Button runat="server" ID="submitter" class="submitter"
Text="Notify" OnClick="submitter_Click" />
</ContentTemplate>
</asp:UpdatePanel>
[一次删除一个东西并进行测试,以确保万无一失。]
settimeout 运行一次代码。 Setinterval 是做什么工作的。我在这里为您重写了代码。试试看是否有帮助。
$(document).ready(function () {
function resetChosen() {
$('.chosen').val(' ').trigger('chosen:updated');
alert('how many times will this work?');
}
$('img').on('click', function (clickEvent) {`enter code here`
setInterval(function () {
resetChosen()
}, 500);
})
})
我查看了它的标记,发现我的控件位于 asp UpdatePanel 中。在我的 _Click 下使用 ScriptManager 注册脚本解决了这个问题。