当前位置:  开发笔记 > 编程语言 > 正文

如何解决与primefaces jquery的冲突

如何解决《如何解决与primefacesjquery的冲突》经验,为你挑选了1个好方法。

我正在使用primefaces 5开发一个项目,一个页面使用需要jquery的js文件,但显示Uncaught TypeError: undefined is not a function,但当我将我的jquery源更改


    
      

工作正常,但我失去了许多主要功能,如 contexMenu

我该如何解决这个冲突?

这是我的javascript文件:

(function($, $S) {
//$ jQuery
//$S window.localStorage
//Variables Declaration
var $board = $('#notesForm\\:board'),
//Board where the Posticks are sticked
Postick, //Singleton Object containing the Functions to work with the LocalStorage
len = 0, //Length of Objects in the LocalStorage
currentNotes = '', //Storage the html construction of the posticks
o; //Actual Postick data in the localStorage

//Manage the Posticks in the Local Storage
//Each postick is saved in the localStorage as an Object 
Postick = {
    add : function(obj) {
        obj.id = $S.length;
        $S.setItem(obj.id, JSON.stringify(obj));
    },

    retrive : function(id) {
        return JSON.parse($S.getItem(id));
    },

    remove : function(id) {
        $S.removeItem(id);
    },

    removeAll : function() {
        $S.clear();
    }

};

//If exist any postick, Create it/them
len = $S.length;
if (len) {
    for (var i = 0; i < len; i++) {
        //Create all posticks saved in localStorage
        var key = $S.key(i);
        o = Postick.retrive(key);
        currentNotes += '
x
'); $(".postick").draggable({ cancel : '.editable' }); }); //Save all the posticks when the user leaves the page window.onbeforeunload = function() { //Clean the localStorage Postick.removeAll(); //Then insert each postick into the LocalStorage //Saving their position on the page, in order to position them when the page is loaded again $('.postick').each(function() { var $this = $(this); Postick.add({ top : parseInt($this.position().top), left : parseInt($this.position().left), text : $this.children('.editable').text() }); }); } })(jQuery, window.localStorage);

BalusC.. 30

PrimeFaces作为一个基于jQuery的JSF组件库已经开箱即用了jQuery(和UI).一旦在页面上使用PrimeFaces组件,PrimeFaces就会自行加载它们.绝对没有必要手动加载其他jQuery文件.它只会在你经历过的所有颜色上发生冲突.

如果你真的想在一个不一定包含PrimeFaces组件的页面上使用jQuery/UI,因此jQuery/UI不一定会自动包含,那么你需要手动包含PrimeFaces捆绑的jQuery,如下所示:



注意:这不会以重复包含的方式结束.JSF/PrimeFaces能够检测到您已经手动声明了它们,并且不会自动包含另一个.

或者,如果你真的想升级 PrimeFaces捆绑的jQuery/UI到新的版本,然后将这些文件究竟以下位置和文件名:

WebContent
 |-- resources
 |    `-- primefaces
 |         `-- jquery
 |              |-- jquery.js          <-- newer jQuery version
 |              `-- jquery-plugins.js  <-- newer jQuery UI version
 :

当在WAR而不是JAR中找到JSF资源时,WAR中的那些资源将比JAR中的资源具有更高的加载优先级.

如果您仍然遇到Uncaught TypeError错误,请确保您在Internet中找到的jQuery代码段与PrimeFaces捆绑的jQuery版本兼容.PrimeFaces 5.0附带jQuery 1.11.0和jQuery UI 1.10.3.您的代码段似乎是针对jQuery 1.4,并且在jQuery 1.11的路径中已经发生了很多变化.例如,$.live()在1.7中弃用并在1.9中删除.另请参阅文档.



1> BalusC..:

PrimeFaces作为一个基于jQuery的JSF组件库已经开箱即用了jQuery(和UI).一旦在页面上使用PrimeFaces组件,PrimeFaces就会自行加载它们.绝对没有必要手动加载其他jQuery文件.它只会在你经历过的所有颜色上发生冲突.

如果你真的想在一个不一定包含PrimeFaces组件的页面上使用jQuery/UI,因此jQuery/UI不一定会自动包含,那么你需要手动包含PrimeFaces捆绑的jQuery,如下所示:



注意:这不会以重复包含的方式结束.JSF/PrimeFaces能够检测到您已经手动声明了它们,并且不会自动包含另一个.

或者,如果你真的想升级 PrimeFaces捆绑的jQuery/UI到新的版本,然后将这些文件究竟以下位置和文件名:

WebContent
 |-- resources
 |    `-- primefaces
 |         `-- jquery
 |              |-- jquery.js          <-- newer jQuery version
 |              `-- jquery-plugins.js  <-- newer jQuery UI version
 :

当在WAR而不是JAR中找到JSF资源时,WAR中的那些资源将比JAR中的资源具有更高的加载优先级.

如果您仍然遇到Uncaught TypeError错误,请确保您在Internet中找到的jQuery代码段与PrimeFaces捆绑的jQuery版本兼容.PrimeFaces 5.0附带jQuery 1.11.0和jQuery UI 1.10.3.您的代码段似乎是针对jQuery 1.4,并且在jQuery 1.11的路径中已经发生了很多变化.例如,$.live()在1.7中弃用并在1.9中删除.另请参阅文档.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有