使用jquery幻灯片,Ajax在JSF中无法正常工作

我有这个用JSF 2.0 facelets编写的应用程序,它有以下代码,它应该在jQuery幻灯片控制的区域中显示一些内容,这意味着你按下显示该区域的按钮并再次按下它来隐藏它

        

正如你所看到的那样,如果没有正确输入电子邮件,就会显示一条错误消息 ,正如我之前所说,这个区域是用jquery.slidetoggle函数和按钮控制的,这使得它成为一个输入内容的幻灯片,

问题是当使用按下提交按钮(此处未显示)时幻灯片冻结并且没有显示错误消息,当我删除“ajax”时,显示消息但幻灯片消失,您必须再次按下切换按钮看到带有错误消息的幻灯片,我已经在同一页面中完成了这个但没有幻灯片,它非常好。

是否有显示幻灯片和错误消息?

当JSF ajax请求完成时,应该重新执行负责设置幻灯片的jQuery脚本,因为ajax响应使用从服务器检索的新元素更改/替换HTML DOM树中的元素,而这些元素当然不会包含那些jQuery初始化的事件处理程序。 每次ajax请求完成时,jQuery脚本都不会自动执行,但只有在刷新页面时才会执行。

您只需要在JSF ajax事件回调处理程序中重新调用您的jQuery函数,如下所示:

 jsf.ajax.addOnEvent(function(data) { if (data.status == "success") { yourjQueryFunctionWhichAddsTheSlideEvents(); } }); 

另一种方法是使用OmniFaces的

 yourjQueryFunctionWhichAddsTheSlideEvents(); 

这样你也不再需要$(document).ready()了。