4

我在 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") %>

作为实例化 Flash 电影的脚本元素

是的 VideoIds 正在输出页面。

更新:这不是闪存的问题..

闪光灯没有问题,因为我在没有闪光灯的情况下尝试过,它甚至不会弹出一个带有简单消息的窗口。

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

Ajax 更新后在 jQuery 中重新绑定事件(更新面板)

——李

4

5 回答 5

14

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

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

有关更多信息,请参阅此答案

于 2009-09-25T14:00:38.640 回答
1

是否将实例化代码插入到回发后未运行的一段代码中?

于 2009-09-25T13:32:06.717 回答
1

它是描述的更新面板

这里.. Ajax 更新后在 jQuery 中重新绑定事件(更新面板)

正如建议的那样,我只是更换了

$(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
            });

   }
}

它奏效了!

——李

于 2009-09-25T14:00:06.780 回答
0

这可能对其他人有所帮助,但 FancyBox 将其代码附加到 <body> 元素......这一切都很好,但位于 asp.net <form> 元素之外。当我修改 FancyBox 以将其 dom 对象附加到 <form> 元素时,我的回发问题就消失了:

$('body form:first').append( ... );
于 2010-04-27T05:18:40.977 回答
0

我在分页网格视图中遇到了类似的问题。网格的第一页正在启动fancybox,而剩余的则没有。

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

我解决了替换这个的问题:

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

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

        });
    </script>

有了这个:

  <script>
        function pageLoad(sender, args) {
            $("a.small").fancybox();
        };
    </script>
于 2013-07-23T14:16:42.670 回答