如何在oracle apex 4.2中包含两个jquery移动版本

时间:2012-10-28 02:12:29

标签: javascript jquery-mobile oracle-apex

尝试在顶点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>

但没有运气。请给我一个提示。非常感谢。

2 个答案:

答案 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>

Warning 警告:您可能需要手动添加一些已移除的文件,因为某些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  
});