我环顾四周,无法直接回答我的基本问题。
我们有一个网站应用了一堆基本的 css 类到元素在 document.ready() 中使用 jQuery。一开始效果很好。
但现在我们也开始使用带有 facelets 的 JSF 2.0 并且有一些 f:ajax 标签 可以根据事件重新呈现部分页面。正如您可以想象的那样,重新渲染的部分显示时没有这些样式,因为在 ajax 调用期间不会再次调用 jQuery 函数。
我现在已经尝试过,发现您可以将一个事件添加到 f:ajax 并强制再次调用主要的 jQuery 函数。但这感觉不太优雅,我需要将它添加到所有 f:ajax 标签中。另外,我遇到了一些无法解释的行为。
所以我的问题是:
- 在 document.ready() 中应用样式类是否仍然有意义?还是在这种情况下是不好的做法?我应该简单地将类添加到元素吗?
- 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?
确实是设计/思维问题。例如,你为什么不直接使用那些 jQuery 选择器而不是你打算添加的 CSS 类呢?要将 CSS 类添加到某些元素,您无论如何都必须使用 CSS 选择器来选择它们,对吗?将 CSS 选择器完全用于最终目的有什么问题?
在 Facelets 透视图中,您可以考虑创建 tagfiles减少代码样板。你可以包装 <h:inputText styleClass="some-specific-class">
在/WEB-INF/tags/inputText.xhtml
并继续使用 <my:inputText>
相反。
Is jQuery ajax a viable alternative to f:ajax?
这是可行的。甚至还有可用的开源示例,例如 PrimeFaces它是围绕 jQuery 和 jQuery UI 构建的。
关于jQuery 在 f :ajax 之后应用 css 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31950053/