lightbox在updatepanel + c#中不起作用

时间:2011-02-07 08:03:10

标签: c# asp.net

我有6个缩略图像asp:imagebutton个实例。这些被视为包含asp:updatepanel控件的页面上asp:image控件的触发器。

当用户单击缩略图时,asp:updatepanel图像控件中的图像将更改为单击的缩略图图像。
用户还可以通过单击放大按钮再次放大图像(这将运行lightbox功能)。这很好用。

问题
问题是当页面加载时放大工作,但是当用户选择缩略图然后尝试时。方法(lightbox)不起作用
我对javascript函数和asp:updatepanel有类似的问题。还有其他人遇到类似的问题吗?如果是这样,我该如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

以下javascript是defalut之一,没有asp:UpdatePanel

它可以正常工作
 <script type="text/javascript">
    $(function() 
    {
     $('#gallery a').lightBox();
    });
  </script> 

但它不能与asp:UpdatePanel一起使用,因此需要在页面加载时调用函数,它可以正常工作。

<script type="text/javascript">
   function pageLoad(sender, args)
   {
    $('#gallery a').lightBox();
   }
</script> 

感谢各位帮忙。

答案 1 :(得分:0)

只有在第一次加载页面时才会执行$ function(DOM就绪函数)。 任何进一步的AJAX调用(这是部分加载/呈现)都不会触发DOM就绪函数。这就是原因,你无法让它发挥作用。

在这种情况下,此功能会在第一次加载页面时将您的锚点链接(按钮)与灯箱行为绑定在一起。所以,它的工作原理。下次刷新更新面板(部分渲染)时,该按钮不会再次绑定到灯箱。除非达到这种约束,否则它不会出现。

通常在这种情况下使用脚本控件来在每次加载控件时触发事件。 如果你不关心隔离相关对象,像pageLoad这样的解决方案仍然没问题。

答案 2 :(得分:0)

解决:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<script src="../slimbox-2.05/slimbox2.min.js" type="text/javascript"></script>
<script type="text/javascript">
    function pageLoad() {
        jQuery(function ($) {
            $("a[rel^='lightbox']").slimbox({/* Put custom options here */
            }, null, function (el) {
                return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
            });
        });
    }
</script>