首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >原型的RoR facebox

原型的RoR facebox
EN

Stack Overflow用户
提问于 2010-08-24 06:53:07
回答 1查看 235关注 0票数 1

我已经在我的rails应用程序中使用以下标记让facebox正常工作

代码语言:javascript
复制
<%= link_to 'test' some_path, :rel => 'facebox' %>

现在,如果页面已经加载,则可以完美地工作。

但是,我在页面的某些部分有ajax更新,其中包含像上面显示的那样的新链接。

当您单击来自ajax更新的链接时,facebox不起作用,接着是模板。

我相信由于页面不刷新,所以源代码是相同的,并且:rel => 'facebox‘不起作用。

有没有人对如何在不刷新页面的情况下让它工作有什么建议?

我已经在控制器的方法中尝试过了。

代码语言:javascript
复制
render :update do |page|
  page << "
    facebox.loading();
    facebox.reveal('text', null); 
    new Effect.Appear(facebox.facebox, {duration: .3});     
  "  
end

然而,由于某些原因,在chrome和IE中,facebox会短暂出现一秒钟,然后就消失了。

有什么建议吗?我一整天都在把头撞到墙上。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2010-08-24 08:06:12

您需要做的就是确保对AJAX响应视图中某个位置的facebox进行javascript调用:最好的位置应该在布局文件中。只需确保您包含以下内容:

代码语言:javascript
复制
#app/views/layouts/ajax.html.erb
#...snip...

<% javascript_tag :defer => 'defer' do -%>
  jQuery(document).ready(function($) {
    $('a[rel*=facebox]').facebox();
  })
<% end -%>

或者使用原型(未测试):

代码语言:javascript
复制
#app/views/layouts/ajax.html.erb
#...snip...

<% javascript_tag :defer => 'defer' do -%>
  document.observe("dom:loaded", function() {
    $$('a[rel*="facebox"]').facebox();
  });
<% end -%>

这将确保页面上出现的任何新链接,作为AJAX更新的一部分,都将由facebox处理。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3552319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档