我环顾四周,无法就我的基本问题得到直接答案。
我们在document.ready()中使用jQuery为将一大堆基本css类应用于元素。这起初工作正常。
但是现在我们还开始使用带有facelets的JSF 2.0 并且有一些 f:ajax标签,它们会根据事件重新呈现部分页面。您可以想象重新呈现的部分显示没有这些样式,因为在ajax调用期间不会再次调用jQuery函数。
我现在已经玩过了,发现你可以向f:ajax 添加一个,并强制再次调用主jQuery函数。但这并不是很优雅,我需要将它添加到所有f:ajax标签中。另外,我遇到了一些无法解释的行为。
所以我的问题是:
非常感谢任何意见,帮助或指导。
由于
答案 0 :(得分:1)
我现在已经玩过了,发现你可以在f:ajax中添加一个tovent并强制再次调用主jQuery函数。但这并不是很优雅,我需要将它添加到所有f:ajax标签。
您可以使用jsf.ajax.addOnEvent()
将其应用于所有<f:ajax>
个请求。另请参阅How to re-execute javascript function after form reRender?
在document.ready()中应用样式类是否仍然有意义?或者在这种情况下这是不好的做法?我应该简单地将类添加到元素中吗?
它确实表明了一个设计/思考问题。例如,为什么不直接使用那些jQuery选择器而不是你想要添加的CSS类?要将CSS类添加到某些元素,您必须使用CSS选择器选择它们,对吧?将CSS选择器用于最终目的有什么问题?
在Facelets透视图中,您可以考虑创建tagfiles以减少代码样板。您可以将<h:inputText styleClass="some-specific-class">
包裹在/WEB-INF/tags/inputText.xhtml
中并继续使用<my:inputText>
。
jQuery ajax是f:ajax的可行替代方案吗?
这是可行的。甚至还有开源示例,例如PrimeFaces,它围绕jQuery和jQuery UI构建。