1

我在尝试将 jquery mobile 1.2 包含在 apex 4.2 中时遇到了一些问题。目前 apex 4.2 与 jquery mobile 1.1.1 捆绑在一起,我需要使用支持对话框并以简单方式弹出的最新版本。但是当我尝试包含这个最新版本时。我的页面变得如此混乱,就像被 jquery 1.1.1 和 1.2 版本渲染两次一样。每个对象出现两次。我试过使用这个脚本:

<script>
var jqm120 = jQuery.noConflict();
</script>

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

4

2 回答 2

2

APEX 4.2#APEX_CSS#中,#APEX_JAVASCRIPT#您的页面模板中有新的替换字符串。如果您想使用自己的库,可以删除它们。删除这些替换字符串将阻止将以下代码添加到页眉中(假设应用程序属性中的Content Delivery Network设置为"None"):

/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正在定义一些主要的 apex 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>

将从模板中删除(您可以自己检查)。

但这些言论仍然适用。

于 2012-10-29T11:30:36.323 回答
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  
});
于 2012-10-28T02:35:25.240 回答