如何在页面上显示一个对话框作为Rails JS响应?

时间:2010-08-19 06:44:48

标签: jquery ruby-on-rails jquery-plugins

我在我的网站中使用jquery colorbox插件作为我的弹出/模态对话框解决方案。当我向客户端发出js响应时,我想打开一个弹出框。我在response1.js.erb

中编写了以下代码
$.colorbox();

我正在从服务器正确获取响应但是当它在浏览器上执行时,firebug会报告错误,如

$.colorbox() is not a function

我还能怎么办?请帮忙。当页面加载时,我所有相关的javascripts(jquery,colorbox)都被正确加载(我检查了页面源html文件)

2 个答案:

答案 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);