如何在.net OnSelectedIndexChanged后运行jquery .change函数?

时间:2010-12-03 13:50:06

标签: c# jquery drop-down-menu asp.net-2.0

我有一个asp:UpdatePanel隐藏或不基于OnSelectedIndexChanged的asp:DropDownList背后的代码。

显示此更新面板时,有一些jquery要突出显示新区域:

  $(document).ready(function(){
      $('#Alert').animate({backgroundColor:'#FF953F'});
      $('#Alert').animate({backgroundColor:'white'}, 3000);
  });

一旦再次显示更新面板,这很有效,但是第一次返回时,jquery在后面的代码之前运行,因此有一个3000ms暂停,然后面板显示没有突出显示。

如何在显示面板后确保jquery运行?

我尝试在JavaScript中添加if visible和delay:

        $('#<%=ddlInfo.ClientID %>').change(function(){
            if( $('#Alert').is(':visible')){
                $('#Alert').animate({backgroundColor:'#FF953F'});
                $('#Alert').animate({backgroundColor:'white'}, 3000);
            };
        });

由于JavaScript在面板返回之前运行,因此没有进行更改。

延迟:

    $('#Alert').delay(1000).animate({backgroundColor:'#FF953F'});

这极大地推迟了小组的显示,因为后面的代码必须等到延迟完成才能再次显示小组。

感谢你提出任何想法。

3 个答案:

答案 0 :(得分:1)

您是否尝试过EndRequestHandler

请看下面的帖子。

http://zeemalik.wordpress.com/2007/11/27/how-to-call-client-side-javascript-function-after-an-updatepanel-asychronous-ajax-request-is-over/

在asp.net论坛上搜索endRequestHandler有很多好帖子。

我希望这可以提供帮助。

鲍勃

答案 1 :(得分:0)

您是否可以通过页面脚本管理器在OnSelectedIndexChanged事件处理程序的末尾注册脚本?

您可能还需要手动告诉更新面板刷新。

答案 2 :(得分:0)

试试这个:

    $('#<%=ddlInfo.ClientID %>').load(function(){
        if( $(this).is(':visible'))
        {
            $('#Alert').animate({backgroundColor:'#FF953F'});
            $('#Alert').animate({backgroundColor:'white'}, 3000);
        };
    });

我不知道页面是怎样的,但你需要做同样的事情。

希望它有所帮助! ;)