【问题标题】:jQuery-Facebox - Popup is not working after repaint from AJAXjQuery-Facebox - 从 AJAX 重绘后弹出窗口不起作用
【发布时间】:2011-03-05 10:00:20
【问题描述】:

我的页面中有一组链接,并且我附加了 facebox jQuery 功能,因此每当按下链接时,它都会弹出一个漂亮的弹出窗口

<a href="coach_selector_popup?day=<%= day %>&hour=<%= hour %>" rel="facebox">

以下是我用于“facebox”的脚本。

<script type="text/javascript">
  jQuery(document).ready(function($) {
    jQuery('a[rel*=facebox]').facebox()
  })
</script>

以上工作正常。但是当我在响应某些 AJAX 调用时再次呈现它时,功能会丢失,这意味着当我单击链接时,我会被重定向到一个页面而不是一个 Facebook 弹出窗口。

我知道我在重绘时需要做一些事情,有人能指出我正确的方向吗?

编辑:我正在像这样在我的控制器上进行部分渲染。

render(:partial => "grid_item" , :locals => {:day=>d, :hour=>h)

【问题讨论】:

    标签: jquery ruby-on-rails facebox


    【解决方案1】:

    您必须在添加新元素后再次调用.facebox()...在您的 ajax 上使用回调函数...

    【讨论】:

    • 你能给我语法吗? (我是 jquery/facebox 的新手)
    • 这取决于你的 ajax 是如何运行的......你能告诉我一些代码吗?......渲染部分......
    • 我可以.. 但它在 ruby​​-on-rails 中?还好吗?
    • 好吧,让我们试一试...只需在上面编辑您的帖子...我可能帮不上忙,但这里有很多内容可能会有所帮助...
    【解决方案2】:

    包括您在部分中提到的 javascript 代码。我猜它会在加载时再次执行。我不确定 document.ready 事件是否在部分更新时触发,但我认为是。

    假设您使用的是link_to_remote 或类似的东西,您还可以使用:complete:succes 选项来添加您的javascript 回调,例如像这样:

    link_to_remote get_icon('remove'), 
       :url => {:action => "your_action", :id => @record},
       :success => "jQuery('a[rel*=facebox]').facebox();" , 
       :failure => "alert('It failed?')"
    

    希望对你有帮助!

    【讨论】:

    • 嘿,我快到了。 jQuery('a[rel*=facebox]') 将整个 LINK 标签集返回给我。但我需要根据 ID 过滤它。怎么办?
    • @Bragaadeesh - 您可以阅读此链接以获取 id 选择器...api.jquery.com/id-selector 或更多其他选择器 api.jquery.com/category/selectors
    • 这个答案对我也有帮助......我添加了 jQuery('a[rel*=facebox]').facebox();在 AJAX 响应中,问题消失了……非常感谢!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多