JQuery绑定单击函数与ASP.Net AJAX回发解除绑定

JQuery绑定单击函数与ASP.Net AJAX回发解除绑定,jquery,asp.net-ajax,Jquery,Asp.net Ajax,大家好, 我有一个简单的JQuery函数,它绑定到ASP:按钮,并在单击submit按钮时激发,如下所示: <asp:Button ID="btnSubmit" CssClass="btnSubmit" OnClick="btnSubmit_Click" runat="server" Text="Send" /> $(document).ready(function () { $(".btnSubmit").click(function ()

大家好,

我有一个简单的JQuery函数,它绑定到ASP:按钮,并在单击submit按钮时激发,如下所示:

<asp:Button ID="btnSubmit" CssClass="btnSubmit" OnClick="btnSubmit_Click" runat="server"
                Text="Send" />

$(document).ready(function () {
    $(".btnSubmit").click(function () {
        alert("button clicked");
    });
});

$(文档).ready(函数(){
$(“.btnSubmit”)。单击(函数(){
警报(“点击按钮”);
});
});
此代码在第一次加载页面时正确运行,但在单击Submit(提交/回发)后不会再次运行。asp按钮代码位于UpdatePanel中。在回发之后,JQuery代码似乎正在“注销”或解除绑定。我在页面上有一个ScriptManager控件,但我所做的就是:

<asp:ScriptManager ID="ContactFormScriptManager" runat="server">
  <Scripts>
    <asp:ScriptReference Path="Scripts/jquery-1.4.1.js" ScriptMode="Auto" />
    <asp:ScriptReference Path="Scripts/contact-form.js" ScriptMode="Auto" />
  </Scripts>
</asp:ScriptManager>

我怀疑我需要用ScriptManager做更多的事情来确保我的JQuery代码保持注册状态,但我不确定是什么。谢谢你的建议

谢谢, -诺斯克

试试这个:

$(document).ready(function () {
    $(".btnSubmit").live('click', function () {
        alert("button clicked");
    });
});
@这个解决方案是正确的,但我想您可能需要一些解释,解释一下为什么会这样:

$(function () {
  $(".btnSubmit").live("click", function() {
    alert("button clicked");
  });
});
这并不是因为它被“注销”,而是UpdatePanel中的元素被新元素完全销毁/替换。由于单击处理程序存储在这些元素上(不完全是,但关闭),因此它不会自动为新元素创建


但是工作方式不同,它向
文档
添加了一个不会被替换的事件处理程序。它侦听
单击
事件以访问文档。当它到达那里时,它检查事件来自的元素是否与选择器匹配……如果选择器匹配,它将执行处理程序。

@Sarfraz和@nick,非常感谢。这就像一个魅力和解释帮助了很多!