JSF,XHTML,Richfaces和jQuery版本的问题

时间:2014-09-19 15:47:21

标签: javascript jquery jsf richfaces conflict

我正在使用Richfaces 3.3.3的JSF 1.2应用程序中工作。因此,我坚持使用jQuery 1.3.2。为了使其更加复杂,$变量似乎未被使用,因为它在组件javascript函数或<script>标记内不起作用。我认为它甚至没有设定。每当调用jQuery时,它都以jQuery(...)完成。这在大多数时候都很好用,但现在我发现自己需要一个特定组件的更高版本的jQuery,而且我似乎无法在不破坏的情况下导入它。

有问题的页面扩展了许多页面共享的模板。扩展此模板的所有内容都嵌套在<a4j:form>中。我不能对它做出重大改变。关于我能做的最好的事情是在主模板的<ui:insert>中添加<head>。然后我可以在其他页面中使用<ui:define>将新的jQuery版本放到头部。这几乎可以工作,但它打破了一些Richfaces组件,特别是页面上的一些客户端切换<rich:tab>元素(它们在点击时什么都不做,没有鼠标悬停样式),并且我在控制台中收到大量的javascript错误。其他javascript / jQuery函数工作得很好。 jQuery.noConflict()没有帮助。我不确定其他组件是否在幕后使用$

这是我正在做的事情的粗略概念:

<ui:define name="jQueryOverride"> //Inserted in the <head> of the main template
    <script type="text/javascript">
        var $132 = jQuery;
    </script>
    <script type="text/javascript" src="../jquery-1.8.2.min.js" />
    <script type="text/javascript">
        var jqry = $;
        jQuery = $ = $132;  
    </script>
</ui:define>

当我添加一些console.log()语句来检查jQuery版本时,所有内容都会检出。 1.3.2设置为$jQuery,而jqry设置为1.8.2。日志语句显示在控制台中的错误之前。

我不确定如何解决这个问题,因为看起来这些页面上的JSF实现有点不同寻常,而使用第二版jQuery的常用方法似乎无法正常工作。

0 个答案:

没有答案