2011-06-14 47 views
0

我使用jQuery fancybox插件在用户单击链接时显示带有关于记录的上下文信息的iframe。jQuery插件在ajax完全回调期间不可用

在ajax成功回调运行时找不到.fancybox()插件。类似以下内容:

$(function() { 
    Widgets = { 
     show_dialog: function(width, height) { 
      $('.fancybox').fancybox({ fancybox settings here}); 
     } 
    } 
}); 

我可以告诉大家的fancybox加载和可用时,从它之后检查断点定义上述窗口小部件对象。我还可以通过在作用域$就像一个匿名函数包裹show_dialog功能修复这个函数的调用如下:

$(function() { 
    Widgets = { 
     show_dialog: function($) { return function(width, height) { 
      $('.fancybox').fancybox({ fancybox settings here}); 
     }; }($) 
    } 
}); 

更多的背景...我使用的postMessage jQuery插件从发送邮件子框架的父框架,如果重要的(我不认为它应该)

任何人都可以解释发生了什么事?它几乎觉得$是在稍后执行页面时重新分配的,但我不会在任何地方加载它。

编辑:更新的fancybox的范围界定为$(“的fancybox”)的fancybox(

+1

iframe和父页面是否位于同一个域? – 2011-06-14 13:41:57

+0

不是,不同的域,因此使用http:///benalman.com/projects/jquery-postmessage-plugin/发送消息给父母帧。消息得到很好。 – 2011-06-14 13:43:52

+0

稍微更多detal ...调用此函数的父函数具有$ .fancybox定义。这个函数通过window ['this_funtion']调用。apply(e.source,args)。 我试着将e.source更改为null,但没有影响错误。 – 2011-06-24 18:49:17

回答

0

我看来,像你需要该呼叫连接到某种类型的对象,即:$("a.text").fancybox({opts});

您看到的错误是什么?您是否真的从框架页面或父页面执行此代码?

+0

我的坏,它附加到一个对象,$('。fancybox')。fancybox({opts}); 实际错误是$('。fancybox')。fancybox不是函数 – 2011-06-14 14:28:57