0

当用户单击链接时,我正在使用 jQuery fancybox 插件来显示带有有关记录的上下文信息的 iframe。

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

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

当上面的 Widgets 对象是通过检查它之后的断点来定义的时,我可以看出fancybox 已加载并且可用。我还可以通过将 show_dialog 函数包装在一个作用域为 $ 的匿名函数中来修复此函数的调用,如下所示:

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

更多背景...我正在使用 postMessage jQuery 插件将消息从子框架发送到父框架,如果这很重要(我认为不应该)

谁能解释发生了什么?几乎感觉 $ 在页面执行的后期被重新分配,但我没有在任何地方加载它。

编辑:fancybox 的范围更新为 $('.fancybox').fancybox(

4

1 回答 1

0

在我看来,您需要将该调用附加到某种对象上,即:$("a.text").fancybox({opts});

你看到的错误是什么?您实际上是从框架页面还是父页面执行此代码?

于 2011-06-14T13:53:50.323 回答