我在我的网站中使用jquery colorbox插件作为我的弹出/模态对话框解决方案。当我向客户端发出js响应时,我想打开一个弹出框。我在response1.js.erb
中编写了以下代码$.colorbox();
我正在从服务器正确获取响应但是当它在浏览器上执行时,firebug会报告错误,如
$.colorbox() is not a function
我还能怎么办?请帮忙。当页面加载时,我所有相关的javascripts(jquery,colorbox)都被正确加载(我检查了页面源html文件)
答案 0 :(得分:0)
这对我有用,您使用format.js
来调用page.js.erb
?当我在我的应用程序的文档中使用$.colorbox({html:'<p>testing 123..</p>'})
时,我确实遇到了问题,并说$box
未定义。不知道为什么会这样。但就我从有限的例子中看到的情况而言,它应该有用。
答案 1 :(得分:0)
确保在致电$.colorbox()
之前加载了Colorbox JS文件。如果在将该函数添加到jQuery对象之前引用该函数,则该函数将不可用。您还应该确保$
在您使用它的上下文中引用jQuery。如果它指的是Prototype,那么您可能会得到该错误。此外,如果你碰巧两次加载jQuery,那么jQuery对象会失去它在上一次jQuery包含在页面之前加载的扩展。一些jQuery插件喜欢在其缩小或打包的发行版中包含jQuery - 这是糟糕的形式 - 然而,它经常会导致这个问题。因此,确保您的库在您已经完成之后不包含jQuery。
确保$
总是引用jQuery的最好方法是将它包含在这样的闭包中:
(function($){
// notice the $ argument of the anonymous function
$('#dollarsign').is('.jQuery');
// this last line executes the anonymous function and passes in jQuery as $
})(jQuery);