Asp.net 回发后updatepanel内的jquery事件处理程序不工作

Asp.net 回发后updatepanel内的jquery事件处理程序不工作,asp.net,Asp.net,我有一个带有“id=ShowDetails”的div。在我的javascript中,我有以下内容: $(document).ready(function () { UIactions(); }); function UIactions () { $('#ShowDetails').click(function () { alert("bingo"); } }); div位于返回的更新面

我有一个带有“id=ShowDetails”的div。在我的javascript中,我有以下内容:

    $(document).ready(function () {
       UIactions();
    });

    function UIactions () {
        $('#ShowDetails').click(function () {
            alert("bingo");
          }
     });
div位于返回的更新面板中。当页面加载时,如果我单击div,我会得到宾果,但是在回发之后,我不会。知道为什么吗


谢谢。

因为更新面板重写了所有javascript处理程序。针对您的情况的解决方案是在每次回发时将您的函数附加到javascript事件处理程序。

正如@Artiom所指出的,这个问题是因为在更新时,UpdatePanel会用回发时生成的标记覆盖现有标记,这会删除UpdatePanel中HTML元素上的所有事件处理程序

<Triggers>
     <asp:PostBackTrigger ControlID="....." />
</Triggers>
有几种方法可以解决这个问题,我在文章中对此进行了讨论。最简单的方法(IMO)是使用jQuery的
live
函数。从我的文章:

如果您使用jQuery,就像我在这些示例中所做的那样,那么还有一种更简单的方法--
live()
函数。
live()
函数现在或将来为一个或多个HTML元素定义事件处理程序。这意味着你可以这样说,“嘿,jQuery,我想让你把这个事件处理程序附加到页面上任何
元素的点击事件上,不管它现在存在还是将来某个时刻。”因此,如果
元素在以后动态添加到页面,jQuery将自动将其单击事件连接到指定的事件处理程序


有关更多信息以及示例,请参阅本文。

我知道这是一篇非常古老的文章,但我遇到了一个问题,即更新面板中的内容更新后,我的jQuery脚本无法工作

我找到了一个简单的解决方案,所有其他解决方案都不值得一看:)

简单,只需记住将asp.net控件添加到
UpdatePanel的
触发器中作为回发

<Triggers>
     <asp:PostBackTrigger ControlID="....." />
</Triggers>


希望这能帮助到别人,因为我花了太多时间寻找解决方案。

经过两天的努力。非常感谢:)这个问题在web.config中出现了吗?@PTuckley:这个问题到目前为止已经有超过2万次的浏览量,因为人们在谷歌中寻找答案,并以不同的方式表述他们的问题。当问题以重复的形式关闭时,他们仍然会被索引以进行搜索,但只需较少的点击就可以将用户重定向到目标问题。目标问题有127K个视图,但其中可能有20K个视图的用户必须多点击几次,因为他们首先来到这里。@Flexo:对,所以重复的值是帮助一些用户找到他们正在寻找的答案。有些人会用链接到“最佳”答案的关键词进行搜索,而另一些人会用链接到重复答案的关键词进行搜索,然后他们会从那里到达目的地。因此,无需对重复项进行否决表决,尤其是当它们有20K个视图时。