尝试在顶点4.2中包含jquery mobile 1.2时遇到了一些问题。目前apex 4.2与jquery mobile 1.1.1捆绑在一起,我需要使用支持对话框的最新版本,并以简单的方式弹出。但是当我尝试包含这个最新版本时。我的页面变得如此混乱,就像被jquery 1.1.1和1.2版本渲染两次一样。每个对象出现两次。我尝试过使用这个脚本:
<script>
var jqm120 = jQuery.noConflict();
</script>
但没有运气。请给我一个提示。非常感谢。
答案 0 :(得分:2)
在 APEX 4.2 中,您的页面模板中有新的替换字符串#APEX_CSS#
和#APEX_JAVASCRIPT#
。如果您想使用自己的库,可以删除它们。删除这些替换字符串将阻止将以下代码添加到页眉中(假设应用程序属性中的 Content Delivery Network 设置为“无”):
/your_image_prefix/css/apex.min.css?v=4.2.0.00.27
/your_image_prefix/libraries/jquery-ui/1.8.22/themes/base/jquery-ui.min.css
/your_image_prefix/libraries/apex/minified/desktop_all.min.js?v=4.2.0.00.27
/your_image_prefix/libraries/apex/minified/legacy.min.js?v=4.2.0.00.27
<script type="text/javascript">
var apex_img_dir = "/your_image_prefix/", htmldb_Img_Dir = apex_img_dir;
</script>
警告:您可能需要手动添加一些已移除的文件,因为某些APEX默认功能将同时删除:/
例如:
apex.min.css?v=4.2.0.00.27
需要正确显示开发人员栏。desktop_all.min.js?v=4.2.0.00.27
不仅包含JQuery和JQuery UI,还包括所有顶级JQuery核心功能...... legacy.min.js?v=4.2.0.00.27
定义了一些主要的顶级Javascript函数(如doSubmit()
等等)。不幸 APEX不提供替换字符串来仅删除JQuery库...
所以一个解决方案是检索默认的APEX文件,然后只从它们中删除JQuery库代码,并用更新的库代码替换它......
这是我找到的唯一解决方案,即使当然更简单的解决方案是使用你提到的JQuery.noConflict
(说实话我还没试过),但它会加载库两次,让你的页面加载更慢?
编辑:
很抱歉,在您的情况下,当您使用 JQuery mobile 时,它应该是这样的:
/your_image_prefix/libraries/jquery-mobile/1.1.1/jquery.mobile-1.1.1.min.css
/your_image_prefix/themes/theme_50/css/4_2.css
/your_image_prefix/libraries/apex/minified/mobile_all.min.js?v=4.2.0.00.27
/your_image_prefix/libraries/jquery-mobile/1.1.1/jquery.mobile-1.1.1.min.js
/your_image_prefix/libraries/apex/minified/legacy.min.js?v=4.2.0.00.27
<script type="text/javascript">
var apex_img_dir = "/your_image_prefix/", htmldb_Img_Dir = apex_img_dir;
</script>
将从模板中删除(您可以自行检查)。
但这些言论仍然适用。
答案 1 :(得分:0)
你可以这样做:
<script type='text/javascript' src='js/jquery_1.7.1.js'></script>
<script type='text/javascript'>
// In case you wonder why we pass the "true" parameter,
// here is the explanation:
// - When you use jQuery.noConflict(), it deletes
// the "$" global variable.
// - When you use jQuery.noConflict(true), it also
// deletes the "jQuery" global variable.
var $jq = jQuery.noConflict(true);
</script>
<script type='text/javascript' src='js/jquery_1.2.1.js'></script>
这样,当您想要使用新版本的jquery而不是$
使用$jq
创建的内容时。
$jq('.selector').on('click', function(){
//do something
});