jQuery 在 f:ajax 之后应用 css 类

jQuery applying css classes after f:ajax

我环顾四周,没有得到关于我的基本问题的直接答案。

我们有一个网站将一堆基本的css类应用到元素使用jQuery在document.ready()。这起初工作正常。

但现在我们也开始使用 JSF 2.0 和 facelets 并且有几个 f:ajax 标签 重新渲染部分基于事件的页面。正如您可以想象的那样,重新渲染的部分显示时没有这些样式,因为在 ajax 调用期间不会再次调用 jQuery 函数。

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

所以我的问题是:

  1. 在 document.ready() 中应用样式 类 是否仍然有意义?还是在这种情况下是不好的做法?我应该简单地将 类 添加到元素中吗?
  2. jQuery ajax 是 f:ajax 的可行替代方案吗?

任何意见或帮助或指导将不胜感激。

谢谢

I have now played around and found that you can add onevent to f:ajax and force the main jQuery function to be called again. But this doesn't feel very elegant and I need to add it to all f:ajax tags.

您可以使用 jsf.ajax.addOnEvent() 将其应用于所有 <f:ajax> 请求。另见 How to re-execute javascript function after form reRender?


Does it still make sense to apply style classes in document.ready()? Or is it bad practise in this instance? Should I simply add the classes to the elements?

这确实表明 design/thinking 有问题。例如,您为什么不直接使用那些 jQuery select 或您打算添加的 CSS 类?要将 CSS 类 添加到某些元素,您必须 select 使用 CSS select 或者无论如何,对吧?完全使用 CSS select 或用于最终目的有什么问题?

从 Facelets 的角度来看,您可以考虑创建 tagfiles 以减少代码样板。您可以将 <h:inputText styleClass="some-specific-class"> 包装在 /WEB-INF/tags/inputText.xhtml 中,然后继续使用 <my:inputText>


Is jQuery ajax a viable alternative to f:ajax?

这是可行的。甚至还有可用的开源示例,例如围绕 jQuery 和 jQuery UI.

构建的 PrimeFaces