jQuery-Facebox – 从AJAX重绘后,Popup无法正常工作

我在我的页面中有一组链接,并且我附加了facebox jQueryfunction,这样无论何时按下链接,它都会得到一个很好的弹出窗口

<a href="https://stackoverflow.com/questions/3069571/jquery-facebox-popup-is-not-working-after-repaint-from-ajax/coach_selector_popup?day=&hour=" rel="facebox"> 

下面是我用于’facebox’的脚本。

  jQuery(document).ready(function($) { jQuery('a[rel*=facebox]').facebox() })  

以上工作正常。 但是当我在响应一些AJAX调用时再次渲染它时,function就会丢失,这意味着当我点击链接时,我被重定向到一个页面而不是一个facebox弹出窗口。

我知道当我重新粉刷时我需要做些什么,有人能指出我正确的方向吗?

编辑:我正在我的控制器上做一个渲染部分像这样。

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

包括您提到的部分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?')" 

希望能帮助到你!

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