Javascript“function pageLoad()”与UpdatePanel不兼容

时间:2010-03-04 16:59:38

标签: .net javascript jquery updatepanel pageload

所以我有了这个UpdatePanel。在里面我有一个漂亮的小jQuery滚动缩略图库,它在回发后显示容器中的完整图像,以从服务器获取完整的图像URL。滚动图库中的每个缩略图都是带有onCommand事件的imageButton。

正在发生的事情是,当点击缩略图时,它会回发到服务器并更改完整的图像容器。由于这是在更新面板中发生的,我使用javascript“function pageLoad(){}”在部分回发后重新应用我的jQuery。它很棒!每次回发后,我都不会丢失我的jQuery视觉效果。

问题是我必须在我必须刷新页面之前才能让一个帖子恢复工作。似乎在第一次回发之后,视图会更新,并且pageLoad JS会触发按预期重新初始化jQuery。下次单击缩略图以查看其完整视图时,我可以在服务器上看到onCommand事件执行,但我的视图没有任何反应;没有完整的图像更改,没有pageLoad()JS触发。没有。就像回发没有进行往返一样,并在服务器上处理后将数据发送回客户端。

不仅如此,而且其他更新面板也会遇到相同的效果,无论其中是否存在受我的pageLoad()JS影响的jQuery元素。第一个回发更新了面板,但随后的回发似乎什么也没做。

我认为问题出在pageLoad()JS上,但我不确定我错过了什么。

这是在每次完整或部分回发之后应该运行的JS方法,并且似乎引起了我的悲痛。它位于我的<头>。

<script type="text/javascript"> 
  function pageLoad(){   
    $("div.scrollable1").unbind();
    $("div.scrollable").unbind();
    // initialize small scrollable.
    $("div.scrollable1").scrollable({size: 1,clickable: false});
    // initialize scrollable    
    $("div.scrollable").scrollable({size: 1,clickable: false}).mousewheel().find("a[rel]").overlay(); 
  }
</script>

1 个答案:

答案 0 :(得分:2)

首先,我想建议不要使用两个不同的JavaScript库。在许多情况下(正如您所看到的那样)它会导致很难解决的问题。

但你可以试试这个:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequest);
function endRequest() {
    //Set your jquery stuff here.
}

我认为这会奏效。此代码应该在任何updatepanel之外,因此不会重新加载。