0

为什么 JQuery 函数在更新面板时不起作用?请看下面的代码。

<asp:Timer ID="Schedule_Timer" runat="server" Interval="10000"></asp:Timer>    
<asp:UpdatePanel ID="Schedule_UpdatePanel" runat="server">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Schedule_Timer" EventName="Tick" />
    </Triggers>
    <ContentTemplate>
        <asp:Panel ID="Schedule_Panel" runat="server" Height="250px"  Width="250px">
            <asp:Literal ID="Schedule_Label" runat="server" Text=""></asp:Literal>
        </asp:Panel>
    </ContentTemplate>
</asp:UpdatePanel>

<script>
    $('#test').cycle({
        fx: 'scrollUp',
        timeout: 6000,
        delay: -2000
    });
</script>

通过Schedule_Label代码隐藏填写:

Protected Sub Schedule_Timer_Tick(sender As Object, e As System.EventArgs) Handles Schedule_Timer.Tick
    PrintTheSchedule()
End Sub

Private Sub PrintTheSchedule()
    //This is just for example, the actual data is taken from gridview based on the realtime
    Schedule_Label.Text = "<div id='test'>" & _
                "<div>test 1</div>" & _
                "<div>test 2</div>" & _
                "<div>test 3</div>" & _
                "<div>"        
End Sub

在前 10 秒,JQuery 循环testdiv。但是在 UpdatePanel 刷新后,JQuery 不再运行,导致所有testdiv 值都显示在页面上。如何解决这个问题?非常感谢。

4

3 回答 3

4

有一个非常简单的答案。

在页面上执行的 jquery 函数只加载自己。因此,当 Timer 打勾时,jquery 函数不再保持有效。

所以你需要做的是:

在 PrintTheSchedule 函数中再次调用 javascript 函数,如

在 C# 中我这样做

ScriptManager.RegisterClientScriptBlock(Page, typeof(Page), "runScript", "RunScriptAgain();", true);

并在 Aspx 页面中执行

<script>

 function RunScriptAgain() 
 {
  $('#test').cycle({
    fx: 'scrollUp',
    timeout: 6000,
    delay: -2000
   });
 }

// 第一次需要

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

于 2012-05-08T04:55:59.000 回答
0

可能,您需要重新初始化循环 bec。内容会改变

于 2012-05-08T05:00:37.883 回答
0

更新面板刷新后..然后带有 id test 的旧 div 被销毁,因此您必须在每次面板更新时绑定循环功能。
另一种方法是使用 jquerys livequery 插件 http://docs.jquery.com/Plugins/livequery 并修改脚本如下

$('#test').livequery(function(){
$(this).cycle({
        fx: 'scrollUp',
        timeout: 6000,
        delay: -2000
    });
});
于 2012-05-08T04:55:24.907 回答