Richfaces a4j:loadScript清除ajax调用上的jQuery插件

我正在加载嵌入RichFaces的jQuery:

 

接下来,我正在加载FancyBox jQuery插件:

  

首次加载页面时,插件工作正常,但是在执行ajax调用后

    

该插件停止工作。 测试显示每次ajax调用都会重新加载a4j:loadScript标记,从而重新加载失去附加插件的jQuery变量。

目前的解决方法是通过在页面中的某处放置标记来加载jQuery。 它除了强制加载jQuery之外什么都不做,但因为它不使用a4j,所以jQuery不会在ajax调用上重新加载。

仍然有一个干净的解决方案吗? 我正在使用包含jQuery 1.3.2的RichFaces 3.3.3。

更新

FancyBox加载:

 jQuery(document).ready( function(){ jQuery('.fancyboxLink').live('click',aclick); }); function aclick(){ jQuery.fancybox({ href: '#{facesContext.externalContext.requestContextPath}/webpage.xhtml', type:'iframe', width:710, height:510, padding:0, margin:0, hideOnOverlayClick:false, overlayColor:'#000' }); return false; } 

在第一次ajax调用之后,jQuery不再包含fancybox。

首先需要的是在每个ajax请求上加载脚本,使用a4j:loadScript

  

第二:在重新呈现组件时执行该fancybox脚本(ajax调用重新呈现包含带有fancybox的元素的dom树的一部分)。 我会通过编写一个自定义facelets组件来做到这一点。

fancyInput.xhtml:

       

你的页面: