我加載jQuery的嵌入RichFaces的有:RichFaces的A4J:loadScript清除Ajax的jQuery插件調用
<a4j:loadScript src="resource://jquery.js"/>
接下來,我加載的fancybox jQuery插件有:
<script type="text/javascript" src="/App/fancybox/jquery.fancybox-1.3.4.pack.js"/>
的插件工作正常,當頁面第一次加載時,但執行後與ajax呼叫
<a4j:jsFunction name="myMethod" data="#{myController.jsonDataToReturn}" action="#{myController.doSomething()}" oncomplete="populateData(data);">
<a4j:actionparam name="selectedTag" assignTo="#{myController.selectedTag}"/>
</a4j:jsFunction>
插件停止窩rking。測試表明,a4j:loadScript
標記在每次ajax調用時都會重新加載,從而重新加載失去連接插件的jQuery變量。
目前的解決方法是通過在頁面中的某處放置一個<rich:jQuery query="fn" />
標籤來加載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。
顯示你的fancybox要求你對元素 –