【发布时间】:2011-05-05 09:03:19
【问题描述】:
我正在使用 Joomla 1.5,我想在 joomla 的后端添加 jQuery 库,以帮助我在组件视图的设计中添加交互。
我希望将 jQuery 添加到管理的某些页面的 HEAD 部分,当然不会与 Joomla 中已包含的 MooTools 库发生冲突。
有人知道怎么做吗?
【问题讨论】:
我正在使用 Joomla 1.5,我想在 joomla 的后端添加 jQuery 库,以帮助我在组件视图的设计中添加交互。
我希望将 jQuery 添加到管理的某些页面的 HEAD 部分,当然不会与 Joomla 中已包含的 MooTools 库发生冲突。
有人知道怎么做吗?
【问题讨论】:
你想知道真正的坏消息吗?为 Joomla 的管理端制作的组件通常严重依赖 MooTools(直到最近,MooTools 的一个非常古老的版本)。想知道好消息吗?如果您在 MooTools 脚本之前插入 jQuery 脚本,MooTools 将覆盖 $ 变量,但您仍然可以访问 jQuery 变量。反过来说,jQuery 将拥有 $,一些插件和模板可能会对你大喊大叫。
那么怎么样你说呢?最简单的方法是走这条路:
/libraries/joomla/document/html/renderer/head.php
在第 129 行附近进入该文件,其中显示“生成脚本文件链接”。在它对 $document->_scripts... 数组运行 foreach 之前,插入:
if ($mainframe->isAdmin) {
$strHtml .= $tab.'<script type="text/javascript" src="/media/system/js/jquery.js"></script>'.$lnEnd;
}
只需将该 src 替换为您的 jquery 脚本的路径即可。现在在您的管理工具中,您将能够使用全局 jQuery var 引用 jQuery 对象,如下所示:
jQuery('#myElement').hide();
这就是为什么 Joomla 让我发疯的原因。但是,嘿..它并不是真正为开发人员构建的,它是为用户构建的。
【讨论】:
恕我直言,更好的方法是像这样执行您的文档就绪功能:
var $jq = jQuery.noConflict();
jQuery(document).ready(function($){
// your doc ready code...
});
所以它做的第一件事就是让 jQuery 进入 noConflict 模式,这实际上将“$”重新分配给“$jq”。所以不要像这样调用 jQuery:$(x).y(),你必须这样做:$jq(x).y()。这一切都很好,花花公子。事实上,您甚至不必这样做,您也可以使用“jQuery”(即 jQuery(x).y() )。 "$" 只是一个别名。
其次,上面的 doc ready 构造传入 '$' 作为参数,这又是 jQuery 的别名,并允许您在 doc ready 回调中使用 '$'。
希望这会有所帮助。我本来会发表评论,但我没有足够的积分或任何评论。
【讨论】: