jQuery-jQuery与DX中的$冲突

发布于 2016-11-13 20:46:40 字数 170 浏览 1153 评论 6

jquery对浏览器兼容和实现某些功能非常方便,大家经常使用;但最近在对dx进行二次开发的过程中,jquery中的$()函数与dx冲突,你引用jquery则dx中的部分js就报错了。看了看dx中这样定义:

function $(id) {

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

甜柠檬 2017-10-28 02:17:10

在页面最前面给jquery取个别名就行了
比如var $j=JQuery.noConflict();
然后把$替换为$j即可,比如$j("#user").val(123);
话说jquery是个超级强大的js框架

夜无邪 2017-10-03 12:52:50

1.替换选择器函数

将原程序中的:

function $(id) {

 return document.getElementById(id);

}

替换为:

function $(id) {

if (typeof jQuery == 'undefined' || (typeof id == 'string' && document.getElementById(id))) {

 return document.getElementById(id);

} else if (typeof id == 'object' || !/^w*$/.exec(id) ||
/^(body|div|span|a|input|textarea|button|img|ul|li|ol|table|tr|th|td)$/.exec(id)){

return jQuery(id);

}

return null;

}

做一个兼容,对于以前直接用字符串ID的调用依旧使用document.getElementById(id)去获取DOM对象;而如果传入的ID是对象,或者里面有特殊符号(如 # . : ^ 等 jQuery 选择器符号)或者是常用的html标签,就使用jQuery选择器去获取jQuery对象。

2.需要先加载jquery的库,然后加载声明这个兼容的 $ 函数的js文件,以覆盖掉jquery的 $ 函数。

<script language="javascript" type="text/javascript" src="source/script_jquery.js"></script>

<script language="javascript" type="text/javascript" src="source/script_common.js"></script>

…………

假如有个TAG的ID是'ctrl_with_id',使用 $('ctrl_with_id') 取得的是DOM的对象,使用$('#ctrl_with_id')可取得jQuery对象,互相不会冲突。

如此,原来程序中的 $ 函数依旧工作,而且同时可以使用 $ 作为jQuery的选择器。

想挽留 2017-09-06 11:43:58

解决方法1:

将jquery.js在common.js之前载入,不然jquery的$()函数会覆盖common.js的$()函数;然后用到jQuery的$()函数的地方都用jQuery()代替。

解决方法2:

将jquery.js在common.js之后载入,在调用jQuery的函数前使用一下代码:
var $$ = jQuery.noConflict();

然后使用$$()或jQuery()来代替jQuery原来的$()函数

瑾兮 2017-08-12 10:52:54

之前我也遇到过类似的问题,是jquery和prototype的$的冲突,尝试上面的方法都是测试有问题,后来根据下面方法测试通过:

1、将jquery.js放到prototype.js前面(这个是必须的!)。
2、在jquery.js后面将$变量重命名。
方法如下:

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
var jQuery=$;
</script>

<script type="text/javascript" type="text/javascript" src="window.js"></script>
<!--上面这个window.js调用了jquery框架的方法-->
<script type="text/javascript" type="text/javascript" src="prototype.js"></script>

3、将原来使用的$方法名一律替换为jQuery名,如$("obj")替换为jQuery("obj")。

例如下面的一段代码, 混合了 jQuery和基于Prototype的 EasyValidation:

 <!-- jquery, 注意加载顺序 -->
<script src="js/jquery-1.2.6.pack.js"></script>
<script type=”text/javascript”>
var jQuery=$;
</script>

<!-- 表单验证 -->
<script src="easy_validation/lib/prototype.js" type="text/javascript"></script>
<script src="easy_validation/lib/effects.js" type="text/javascript"></script>
<script src="easy_validation/src/validation_cn.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="easy_validation/styles/style_min.css" />

<div id="contents"></div>
<script>
jQuery(document).ready(function(){
//jQuery("#contents").load("test.jsp");
jQuery("#contents").load("test.jsp?username=BeanSoft")
});
</script>
<!-- 为form增加required-validate class,标识需要验证form -->
<form id='helloworld' action="#" class='required-validate'>
<input name="user.name" class="required min-length-6 max-length-20 validate-alphanum" value="beansoft">
*密码:
<input name="user.password" type="password" class="required min-length-6 max-length-20" value="123456" >

*密码(重复):
<input name="password1" type="password" class="required equals-user.password" value="123456" >

<input type='submit' value='Submit'/>
<input type='reset' value='Reset'/>
</form>

清晨说ぺ晚安 2017-05-11 11:28:08

修改你用jquey实现的js文件,找到除去参数、变量前缀的 $, 例如需要替换的内容为: $. $( 这些类型,直接将 $ 换成 jQuery , 记住,是将你写的或者找到的jq文件中的,和上述类型一样的 $ 统统换成 jQuery,下一步: 在你引用所有jquery文件(jquery-1.2.4b.js和common.js)的时候, 按如下方法写:

<script src=”/static/js/jquery-1.2.4b.js” type=”text/javascript”></script>
<script src=”/static/js/common.js” type=”text/javascript”></script>
<script type=”text/javascript”>
调用的jquery代码(当中涉及和上述 $有关的,也需要替换成jQuery!!!)
</script>
<script type=”text/javascript”> //这里很重要,必须写的!
jQuery.noConflict();
</script

瑾兮 2017-02-07 18:42:19

这是先前做uchome 程序中 $ 函数与 jquery 冲突的解决办法

1.替换选择器函数

 将原程序中的:

function $(id) {

return document.getElementById(id);

}

替换为:

function $(id) {

if (typeof jQuery == 'undefined' || (typeof id == 'string' && document.getElementById(id))) {

return document.getElementById(id);

} else if (typeof id == 'object' || !/^w*$/.exec(id) ||
/^(body|div|span|a|input|textarea|button|img|ul|li|ol|table|tr|th|td)$/.exec(id)){

return jQuery(id);

}

return null;

}

做 一个兼容,对于以前直接用字符串ID的调用依旧使用document.getElementById(id)去获取DOM对象;而如果传入的ID是对象, 或者里面有特殊符号(如 # . : ^ 等 jQuery 选择器符号)或者是常用的html标签,就使用jQuery选择器去获取jQuery对象。

2.需要先加载jquery的库,然后加载声明这个兼容的 $ 函数的js文件,以覆盖掉jquery的 $ 函数。

 <script language="javascript" type="text/javascript" src="source/script_jquery.js"></script>

<script language="javascript" type="text/javascript" src="source/script_common.js"></script>

…………

假如有个TAG的ID是'ctrl_with_id',使用 $('ctrl_with_id') 取得的是DOM的对象,使用$('#ctrl_with_id')可取得jQuery对象,互相不会冲突。

如此,原来程序中的 $ 函数依旧工作,而且同时可以使用 $ 作为jQuery的选择器。

这么解决冲突,暂时还未发现问题,你可以参考一下

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文