1

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

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

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

不仅如此,其他更新面板也会体验到相同的效果,无论其中是否存在受我的 pageLoad() JS 影响的 jQuery 元素。第一次回发可以很好地更新面板,但随后的回发似乎什么也没做。

我认为问题出在 pageLoad() JS,但我不确定我缺少什么。

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

<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>
4

1 回答 1

2

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

但你可以试试这个:

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

我认为这会奏效。此代码应位于任何更新面板之外,因此不会重新加载。

于 2010-03-04T17:41:04.363 回答