我在asp.net页面上有一个Fancybox(或更准确地说)一些奇特的盒子。
我的Fancybox(jquery插件)正常工作,直到页面上发生回发,然后拒绝工作。
有什么想法?有没有人经历过类似的行为?
更新:部分代码..
我有一个数据包转发器,每个重复项目都有一个花式盒。
它们是由(在转发器之外)实现的
$(document).ready(function() {
$("a.watchvideo").fancybox({
'overlayShow': false,
'frameWidth' : 480,
'frameHeight' : 400
});
});
锚标记重复..
HREF = “#watchvideo_<%#的eval(” VIDEOID “)%>” 中
与
一样的divid="watchvideo_<%#Eval("VideoId") %>
作为实现闪光电影的脚本元素
是的,VideoIds正在输出页面。
更新:这不是闪光灯的问题..
这不是闪光灯的问题,因为我没有闪光灯就试过它,它甚至不会弹出一个带有简单信息的窗口。
更新:我想知道它是否是更新面板。
Rebinding events in jQuery after Ajax update (updatepanel)
- 李
答案 0 :(得分:14)
问题在于使用$(document).ready()
绑定fancybox。此代码仅在最初加载页面时执行一次。如果您希望在每个回发(同步或异步)上使用fancybox功能,请将$(document).ready()
替换为pageLoad(sender, args)
。即
function pageLoad(sender, args) {
$("a.watchvideo").fancybox({
'overlayShow': false,
'frameWidth' : 480,
'frameHeight' : 400
});
}
答案 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>