Jquery Fancybox在回发后无法正常工作

时间:2009-09-25 13:13:11

标签: javascript c# jquery jquery-plugins fancybox

我在asp.net页面上有一个Fancybox(或更准确地说)一些奇特的盒子。

我的Fancybox(jquery插件)正常工作,直到页面上发生回发,然后拒绝工作。

有什么想法?有没有人经历过类似的行为?

更新:部分代码..

我有一个数据包转发器,每个重复项目都有一个花式盒。

它们是由(在转发器之外)实现的

$(document).ready(function() {
            $("a.watchvideo").fancybox({
            'overlayShow': false,
            'frameWidth' : 480,
            'frameHeight' : 400
            });
        }); 

锚标记重复..

  

HREF = “#watchvideo_<%#的eval(” VIDEOID “)%>” 中

一样的div
id="watchvideo_<%#Eval("VideoId") %>

作为实现闪光电影的脚本元素

是的,VideoIds正在输出页面。

更新:这不是闪光灯的问题..

这不是闪光灯的问题,因为我没有闪光灯就试过它,它甚至不会弹出一个带有简单信息的窗口。

更新:我想知道它是否是更新面板。

Rebinding events in jQuery after Ajax update (updatepanel)

- 李

5 个答案:

答案 0 :(得分:14)

问题在于使用$(document).ready()绑定fancybox。此代码仅在最初加载页面时执行一次。如果您希望在每个回发(同步或异步)上使用fancybox功能,请将$(document).ready()替换为pageLoad(sender, args)。即

function pageLoad(sender, args) {
        $("a.watchvideo").fancybox({
        'overlayShow': false,
        'frameWidth' : 480,
        'frameHeight' : 400
        });
}

see this answer for more info

答案 1 :(得分:1)

是否可以将实例化代码插入到一段不会在回发后运行的代码中?

答案 2 :(得分:1)

这是所描述的更新面板

这里.. Rebinding events in jQuery after Ajax update (updatepanel)

根据建议,我只需更换

$(document).ready(function() {
            $("a.watchvideo").fancybox({
            'overlayShow': false,
            'frameWidth' : 480,
            'frameHeight' : 400
            });
        });

function pageLoad(sender, args)
{
   if(args.get_isPartialLoad())
   {
       $("a.watchvideo").fancybox({
            'overlayShow': false,
            'frameWidth' : 480,
            'frameHeight' : 400
            });

   }
}

它有效!

- 李

答案 3 :(得分:0)

这可能会帮助其他人,但FancyBox会将其代码附加到&lt; body&gt; element ...这一切都很好,但是在asp.net&lt; form&gt;之外。元件。当我修改FancyBox以将其dom对象附加到&lt; form&gt;时,我的回发问题就消失了。元素:

$('body form:first').append( ... );

答案 4 :(得分:0)

我在分页网格视图中遇到了类似的问题。网格的第一页是启动fancybox,而重映没有。

我认为这可能是与UpdatePanel相关的问题,只会刷新部分屏幕。

我解决了这个问题:

 <script>
        $(document).ready(function () {

            $("a.small").fancybox();

        });
    </script>

用这个:

  <script>
        function pageLoad(sender, args) {
            $("a.small").fancybox();
        };
    </script>