C# 当通过部分回发加载时,Jquery将停止在Asp.net控件中工作

C# 当通过部分回发加载时,Jquery将停止在Asp.net控件中工作,c#,jquery,asp.net,user-controls,updatepanel,C#,Jquery,Asp.net,User Controls,Updatepanel,在ASP.net/C应用程序中。 我正在使用更新面板和其中的占位符来动态加载控件 <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> <Triggers> <asp:AsyncPostBackTrigger ControlID="LinkButton1" EventName="Click"/> </Triggers>

在ASP.net/C应用程序中。 我正在使用更新面板和其中的占位符来动态加载控件

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="LinkButton1" EventName="Click"/>
    </Triggers>
    <ContentTemplate>
        <asp:PlaceHolder ID="PlaceHolder1" runat="server">
        </asp:PlaceHolder>
    </ContentTemplate>
</asp:UpdatePanel>
我所有的控件都加载正确

但问题是:

我有一个控件,当我单击div时,它使用Javascript和Jquery创建一个下拉动画。 当通过正常回发加载到页面上时,此控件正常工作 但是,当我使用部分回发在更新面板中加载它时,它会加载,但javascript停止工作(不再有下拉动画和其他内容)


通过部分回发加载控件时,如何使它们工作?

我认为您的动画正在$(document).ready()事件中注册。然后它在所有div上注册,即特定动画。
如果回发到updatepanel,则不会触发document ready事件,因此会注册动画。在updatepanel中回发之后,您应该自己再做一次。

我猜您的下拉菜单动画是在dom就绪时执行的。因此,您的初始页面加载将在下拉列表中需要的任何位置设置动画

使用部分回发时,它只会加载该部分,因此不会设置动画。因为它不是最初准备好的Dom的一部分

您需要在返回部分帖子时触发一些javascript来运行可能需要设置动画的相同功能

编辑

更新面板返回后,应该可以帮助您执行javascript。

我认为使用Jquery“Live”可能是您想要的答案,这将监视DOM中的更改

$({YOURQUERY}”).live(“单击”,函数(){alert(“再见!”;})

查看jquery文档以获取更多信息。

当您执行.bind()时,您仅在给定时刻,即执行.bind()时,连接DOM中元素的事件。通过部分回发异步加载的控件在document.ready中不存在,这就是事件不起作用的原因

您应该使用live或delegate,如果您使用的是jQuery 1.7或更高版本,则应该使用新的:


谢谢你的回复。是,它在$(document).ready()事件中注册。你能告诉我自己怎么做吗?感谢您在$(document).ready()事件中执行的函数,如果您在更新面板重新加载后调用该函数。我不太确定如何以最好的方式实现这一点。我使用控件中的隐藏图像并从onload事件调用javascript函数实现了这一点:onload=“initSearchItems()”。谢谢你的帮助
protected void LinkButton1_Click(object sender, EventArgs e)
{
    PlaceHolder1.Controls.Clear();
    MyControl C;
    C = (MyControl1 )LoadControl("Controls/MyControl.ascx");
    PlaceHolder1.Controls.Add(C);
}
$(function(){
    $('placeholder-selector').on('click' , 'your-clickable-selector', function(){
        //do your animation here
    });
});