更改 richfaces 中使用的 JQuery 版本

发布于 2024-12-08 11:39:10 字数 432 浏览 0 评论 0原文

我正在使用 richfaces 3_3_3.Final,并且不想使用最新的 jQuery http://code.jquery.com/jquery-latest.pack.js,但它似乎有冲突。

Richfaces 已经加载了 jQuery 版本(巫婆不是合适的版本,似乎是 1.3.2):

<script type="text/javascript" src="/project/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/scripts/jquery/jquery.js.jsf">

我可以为我的 Javascript 进程使用最新版本,并允许 RichFaces 使用自己的版本吗?如何?

jQuery.noConflict() 是一个好的研究领域吗?

I am using richfaces 3_3_3.Final, and I wan't to use the latest jQuery http://code.jquery.com/jquery-latest.pack.js, but it seems to have conflicts.

Richfaces already load a jQuery version (witch is not the suitable version, seems to be 1.3.2) :

<script type="text/javascript" src="/project/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/scripts/jquery/jquery.js.jsf">

Can I use the latest version for my Javascript process, and allow RichFaces to use its own version, and how?

Is jQuery.noConflict() a good area of research ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

秋叶绚丽 2024-12-15 11:39:10

是的,jQuery.noConflict 是一个好的开始,但是由于您使用的“其他库”也是 jQuery,因此可能会出现复杂情况。

当您加载 jQuery 时,它会将 $jQuery 定义为全局变量。使用 .noConflict 将“放弃对 $ 变量的控制” - 意味着无论 $ 之前是什么,它将再次设置为。如果首先加载 v1.3.2,然后加载最新包(目前为 1.6.4),.noConflict 将使 $ 引用 v1.3.2 但 jQuery 仍将引用 1.6.4。

基本上,您需要在加载最新包之前为 jQuery 指定别名。 查看我的小提琴用于模拟您的情况(也粘贴在下面)。

<script type="text/javascript">
    //alias v.1.3.2
    var $132 = $;
</script>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script>
<script type="text/javascript">
    //alias v1.6.4
    var $164 = $, jQuery164 = $;

    //reset original variables to v1.3.2
    $ = jQuery = $132;

    console.log("v1.3.2: ", $().jquery, jQuery().jquery)
    console.log("v1.6.4: ", $164().jquery, jQuery164().jquery)

    $('div')      //selected using v1.3.2
    $164('div')   //selected using v1.6.4
</script>

加载 1.6.4 后,您需要为其指定别名,并将 $jQuery 设置回 1.3.2 对象。这不使用 .noConflict 因为它本质上做同样的事情。 RichFaces 将继续使用 1.3.2,您将根据别名 1.6.4 版本编写代码。在我的小提琴中,这意味着使用 $164 而不是使用 $。我希望这是有道理的。我相信小提琴会更清晰。


最后,使用 jquery-latest.pack.js 开发代码很好,但您不应该在生产网站上使用它。原因是因为在未来的某个时候,jQuery 将会更新。如果您正在加载最新的包,这些更新可能会在您不知情的情况下破坏您网站的功能。更安全的做法是选择一个版本并坚持使用,只有在确认您的网站将继续正常运行时才升级。

Yes, jQuery.noConflict is a good start, but since the "other library" you are using is also jQuery, there will probably be complications.

When you load jQuery, it defines $ and jQuery as global variables. Using .noConflict will "relinquish control of the $ variable" - meaning whatever $ was before, it will be set to again. If v1.3.2 is loaded first and you load latest pack (1.6.4 as of right now) next, .noConflict will make $ refer to v1.3.2 but jQuery will still refer to 1.6.4.

Basically, you need to alias jQuery before you load the latest pack. See my fiddle used to simulate your situation (also pasted below).

<script type="text/javascript">
    //alias v.1.3.2
    var $132 = $;
</script>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script>
<script type="text/javascript">
    //alias v1.6.4
    var $164 = $, jQuery164 = $;

    //reset original variables to v1.3.2
    $ = jQuery = $132;

    console.log("v1.3.2: ", $().jquery, jQuery().jquery)
    console.log("v1.6.4: ", $164().jquery, jQuery164().jquery)

    $('div')      //selected using v1.3.2
    $164('div')   //selected using v1.6.4
</script>

After loading 1.6.4, you need to alias it and set $ and jQuery back to the 1.3.2 objects. This doesnt use .noConflict becuase it essentially does the same thing. RichFaces will continue to work using 1.3.2 and you will write your code against the aliased 1.6.4 version. In my fiddle, that means using $164 instead of using $. I hope that makes sense. I am sure the fiddle will be clearer.


Finally, it is fine to develop code using jquery-latest.pack.js but you shouldn't ever use that on your production website. The reason is because at some point in the future, jQuery will be updated. If you are loading the latest pack, those updates may break the functionality of your site without you even knowing it. It's safer to just pick a version and stick to it, only upgrading only when you confirmed that your site will continue to function properly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文