Discuz!6.1和jquery的冲突

由于需要在Discuz!6.1中使用jquery库,但后来发现用不了,也找不到原因,之后去网上一找,原来是因为Discuz!6.1的common.js修改Array对象的prototype方法,造成的问题。解决方法是:

if(typeof Array.prototype.push === 'undefined') {
 Array.prototype.push = function(value) {
        this[this.length] = value;
        return this.length;
 }
}

对这个方法进行判断。这解决这个问题的过程中,算是理解了一些奇怪写法的js代码。比如:

(function($){

…….

}){jQuery}

这种写法使用了闭包的一些特性。通过一个匿名函数来隐藏变更的作用域,这样在这个函数体内还是使用$为jQuery对象的引用,呵呵,原来写的代码在有冲突的页面中就不需要修改了。

分享到: 更多