jquery效果突出显示在asp.net更新面板中不起作用

时间:2011-02-23 22:48:32

标签: jquery asp.net ajax jquery-ui updatepanel

我有两个更新面板如下(当点击链接按钮时,我试图突出显示div)

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>     
              <asp:Linkbutton id="btnChange" runat="server" OnCommand="LinkButton_Command"/>
              <asp:Linkbutton id="btnChange2" runat="server" OnCommand="LinkButton_Command"/>
        </ContentTemplate>        
</asp:UpdatePanel> 

<asp:UpdatePanel ID="UpdatePanel2" runat="server">
        <ContentTemplate>    
             <div id="shdr">Hello there!</div> 
        </ContentTemplate>        
</asp:UpdatePanel>

我正在覆盖OnLoadComplete并在页面上注册此脚本,如下所示

ScriptManager.RegisterClientScriptBlock(Me, Me.GetType(), "divHigh", "$('#shdr').effect('highlight', {}, 3000);", True)

这会在回发后突出显示div,但超时值不起作用,它会继续显示突出显示的颜色并且不会改回。

导致这种情况不起作用的原因是什么?

3 个答案:

答案 0 :(得分:2)

如果您使用的是UpdatePanel,即Script Manager

$(function () {
 //Code that runs before update panel is fired.

        //Listen for update panel
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
        //Re-initialize jquery after an auto post back.
        function EndRequestHandler(sender, args) {
            //Do work after update panel fires.
        } 
    });

基本上,如果你希望它能够在回发后运行,你将拥有你的jQuery代码,然后是EndRequestHandler函数中的相同代码。

答案 1 :(得分:0)

您可以使用ASP.Net Ajax的pageLoad()方法来调用高亮显示逻辑,如下所示:

<script type="text/javascript">
function pageLoad(){
    $('#shdr').effect('highlight', {}, 3000);
};
</script>

每次部分回调以及常规回调都会自动调用。

答案 2 :(得分:0)

如果您希望在每次面板刷新时运行一些javascript,您可以将以下脚本添加到您的页面。这将注册一个javascript函数,以便在UpdatePanel刷新时运行。

<script type="text/javascript">
    function NameOfJavascriptFunctionYouWantToRunHere()
    {
        $('#shdr').effect('highlight', {}, 3000);
    };

    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_pageLoaded(NameOfJavascriptFunctionYouWantToRunHere);
</script>