jQuery在f:ajax之后应用css类

时间:2015-08-11 19:11:25

标签: jquery css ajax jsf jsf-2

我环顾四周,无法就我的基本问题得到直接答案。

我们在document.ready()中使用jQuery为将一大堆基本css类应用于元素。这起初工作正常。

但是现在我们还开始使用带有facelets的JSF 2.0 并且有一些 f:ajax标签,它们会根据事件重新呈现部分页面。您可以想象重新呈现的部分显示没有这些样式,因为在ajax调用期间不会再次调用jQuery函数。

我现在已经玩过了,发现你可以向f:ajax 添加一个,并强制再次调用主jQuery函数。但这并不是很优雅,我需要将它添加到所有f:ajax标签中。另外,我遇​​到了一些无法解释的行为。

所以我的问题是:

  1. 在document.ready()中应用样式类是否仍然有意义?或者在这种情况下这是不好的做法?我应该简单地将类添加到元素吗?
  2. jQuery ajax是f:ajax的可行替代方案吗?
  3. 非常感谢任何意见,帮助或指导。

    由于

1 个答案:

答案 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构建。