开启辅助访问 切换到窄版

Discuz与JQuery不兼容解决方案

[复制链接]
作者:hanhongwen 
版块:
开发环境 环境配置-问题解决方案 发布时间:2018-2-22 23:32:30
4720

管理员

积分
13452
QQ
hanhongwen 发表于 2018-2-22 23:32:30 | 显示全部楼层 |阅读模式
做Discuz模板的都知道Discuz与jQuery不兼容,会造成DIY功能和下拉菜单无法使用,对于不熟悉Javascript的人来说看了都是一头雾水

一、冲突原因
jQuery是通过一个全局变量$来引用的,而Discuz的common.js文件加载时也占用了$。因而冲突的根源就是全局变量$。说得明白点:当jQuery和common.js共存的时候,$究竟是谁?
分析jQuery和common.js的源代码可以知道,这两个库在加载的时候都会占用$变量。因此,按照覆盖的原理,谁后加载,$变量就是谁。

二、解决思路
除了$,jQuery还占用了另外一个变量作为别名,这个别名就是库本身的名称jQuery
在jQuery下
  1. $("div");
复制代码


  1. jQuery("div");
复制代码

是同样的意思,所以我们可以将$送给common.js来使用,而jQuery使用jQuery这个代号。
除了common.js和jQuery.js文件,一般还会涉及到一个控制特效的js文件,了解了这些问题后就可以进行下面的操作了。

三、解决冲突的方法

1、将$送给common.js
打开jQuery的源代码,在最后面添加
  1. jQuery.noConflict();
复制代码


2、替换特效JS文件中的$符号
打开特效JS文件,搜索
  1. $(
复制代码

替换为
  1. jQuery(
复制代码


保存好所有文件,更新缓存

以上为不兼容的简单解决办法,祝你成功

    15561578755
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表