更改 richfaces 中使用的 JQuery 版本
我正在使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,
jQuery.noConflict
是一个好的开始,但是由于您使用的“其他库”也是 jQuery,因此可能会出现复杂情况。当您加载 jQuery 时,它会将
$
和jQuery
定义为全局变量。使用.noConflict
将“放弃对$
变量的控制” - 意味着无论$
之前是什么,它将再次设置为。如果首先加载 v1.3.2,然后加载最新包(目前为 1.6.4),.noConflict
将使$
引用 v1.3.2 但jQuery
仍将引用 1.6.4。基本上,您需要在加载最新包之前为 jQuery 指定别名。 查看我的小提琴用于模拟您的情况(也粘贴在下面)。
加载 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
$
andjQuery
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 butjQuery
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).
After loading 1.6.4, you need to alias it and set
$
andjQuery
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.