当用户单击链接时,我正在使用 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(