【问题标题】:jquery effect highlight not working in asp.net update paneljquery 效果突出显示在 asp.net 更新面板中不起作用
【发布时间】:2011-07-03 03:56:11
【问题描述】:

我有两个更新面板如下(点击链接按钮时我试图突出显示 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,但超时值不起作用它继续显示突出显示的颜色并且不会变回来。

什么可能导致这不起作用?

【问题讨论】:

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


    【解决方案1】:

    如果您使用的是 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 函数中使用相同的代码。

    【讨论】:

    • 这个可以,但是高亮后没有变回原来颜色的问题仍然存在
    • @rs,突出显示 'endrequesthandler` 外部和内部的 div,另外使用 delay() 将其更改回 endrequesthandler 内。因此,本质上,当您单击链接按钮时,您会高亮显示 div,然后您发回并再次高亮显示它(因为更新面板正在破坏和重建页面),然后延迟 3000,最后删除高亮显示。
    【解决方案2】:

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

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

    这将在每个部分回调以及常规回调中自动调用。

    【讨论】:

      【解决方案3】:

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

      <script type="text/javascript">
          function NameOfJavascriptFunctionYouWantToRunHere()
          {
              $('#shdr').effect('highlight', {}, 3000);
          };
      
          var prm = Sys.WebForms.PageRequestManager.getInstance();
          prm.add_pageLoaded(NameOfJavascriptFunctionYouWantToRunHere);
      </script>
      

      【讨论】:

      • 谢谢,但已经试过了,这不起作用,它甚至没有突出显示 div
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 2014-06-27
      • 1970-01-01
      • 2015-07-20
      相关资源
      最近更新 更多