Javascript 使用2个JS版本无冲突

Javascript 使用2个JS版本无冲突,javascript,jquery,Javascript,Jquery,我正在将一个脚本添加到我的magento站点中,由于该脚本使用不同版本的JS,所以出现了原型错误 我试着去做 $.noConflict(); //使用其他库的$的代码可以在这里找到 没有成功 实现无冲突的最佳方式是什么 <script src="http://code.jquery.com/jquery-1.8.2.js"></script> <script src="http://code.jquery.com/ui/1.9.1/jquery-ui.js">

我正在将一个脚本添加到我的magento站点中,由于该脚本使用不同版本的JS,所以出现了原型错误

我试着去做

$.noConflict(); //使用其他库的$的代码可以在这里找到

没有成功

实现无冲突的最佳方式是什么

<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script src="http://code.jquery.com/ui/1.9.1/jquery-ui.js"></script>
<script>
$(function() {
    $( "#accordion" ).accordion({
        event: "click hoverintent"
    });
});

var cfg = ($.hoverintent = {
    sensitivity: 7,
    interval: 100
});

$.event.special.hoverintent = {
    setup: function() {
        $( this ).bind( "mouseover", jQuery.event.special.hoverintent.handler );
    },
    teardown: function() {
        $( this ).unbind( "mouseover", jQuery.event.special.hoverintent.handler );
    },
    handler: function( event ) {
        var that = this,
            args = arguments,
            target = $( event.target ),
            cX, cY, pX, pY;

        function track( event ) {
            cX = event.pageX;
            cY = event.pageY;
        };
        pX = event.pageX;
        pY = event.pageY;
        function clear() {
            target
                .unbind( "mousemove", track )
                .unbind( "mouseout", arguments.callee );
            clearTimeout( timeout );
        }
        function handler() {
            if ( ( Math.abs( pX - cX ) + Math.abs( pY - cY ) ) < cfg.sensitivity ) {
                clear();
                event.type = "hoverintent";
                // prevent accessing the original event since the new event
                // is fired asynchronously and the old event is no longer
                // usable (#6028)
                event.originalEvent = {};
                jQuery.event.handle.apply( that, args );
            } else {
                pX = cX;
                pY = cY;
                timeout = setTimeout( handler, cfg.interval );
            }
        }
        var timeout = setTimeout( handler, cfg.interval );
        target.mousemove( track ).mouseout( clear );
        return true;
    }
};
</script>

$(函数(){
$(“手风琴”)。手风琴({
事件:“单击鼠标悬停意图”
});
});
var cfg=($.hoverintent={
敏感度:7,
间隔时间:100
});
$.event.special.hoverintent={
设置:函数(){
$(this.bind(“mouseover”,jQuery.event.special.hoverintent.handler);
},
拆卸:函数(){
$(this).unbind(“mouseover”,jQuery.event.special.hoverintent.handler);
},
处理程序:函数(事件){
var=这个,
args=参数,
target=$(event.target),
cX,cY,pX,pY;
功能跟踪(事件){
cX=event.pageX;
cY=event.pageY;
};
pX=event.pageX;
pY=event.pageY;
函数clear(){
目标
.unbind(“mousemove”,轨迹)
.unbind(“mouseout”,arguments.callee);
clearTimeout(超时);
}
函数处理程序(){
if((数学abs(pX-cX)+数学abs(pY-cY))
如果您只是在这个匿名函数中使用jQuery,您可以在匿名函数中包装所有内容:

(function ($) {
    $( "#accordion" ).accordion({
        event: "click hoverintent"
    });


var cfg = ($.hoverintent = {
    sensitivity: 7,
    interval: 100
});

$.event.special.hoverintent = {
    setup: function() {
        $( this ).bind( "mouseover", jQuery.event.special.hoverintent.handler );
    },
    teardown: function() {
        $( this ).unbind( "mouseover", jQuery.event.special.hoverintent.handler );
    },
    handler: function( event ) {
        var that = this,
            args = arguments,
            target = $( event.target ),
            cX, cY, pX, pY;

        function track( event ) {
            cX = event.pageX;
            cY = event.pageY;
        };
        pX = event.pageX;
        pY = event.pageY;
        function clear() {
            target
                .unbind( "mousemove", track )
                .unbind( "mouseout", arguments.callee );
            clearTimeout( timeout );
        }
        function handler() {
            if ( ( Math.abs( pX - cX ) + Math.abs( pY - cY ) ) < cfg.sensitivity ) {
                clear();
                event.type = "hoverintent";
                // prevent accessing the original event since the new event
                // is fired asynchronously and the old event is no longer
                // usable (#6028)
                event.originalEvent = {};
                jQuery.event.handle.apply( that, args );
            } else {
                pX = cX;
                pY = cY;
                timeout = setTimeout( handler, cfg.interval );
            }
        }
        var timeout = setTimeout( handler, cfg.interval );
        target.mousemove( track ).mouseout( clear );
        return true;
    }
};


}(jQuery));
(函数($){
$(“手风琴”)。手风琴({
事件:“单击鼠标悬停意图”
});
var cfg=($.hoverintent={
敏感度:7,
间隔时间:100
});
$.event.special.hoverintent={
设置:函数(){
$(this.bind(“mouseover”,jQuery.event.special.hoverintent.handler);
},
拆卸:函数(){
$(this).unbind(“mouseover”,jQuery.event.special.hoverintent.handler);
},
处理程序:函数(事件){
var=这个,
args=参数,
target=$(event.target),
cX,cY,pX,pY;
功能跟踪(事件){
cX=event.pageX;
cY=event.pageY;
};
pX=event.pageX;
pY=event.pageY;
函数clear(){
目标
.unbind(“mousemove”,轨迹)
.unbind(“mouseout”,arguments.callee);
clearTimeout(超时);
}
函数处理程序(){
if((数学abs(pX-cX)+数学abs(pY-cY))
基本上,您将整个匿名函数包装在javascript中,将jQuery作为$传递到匿名函数中,它将“覆盖”这个匿名函数中的原型


这有用吗?

它使用了不同版本的Javascript…?您的问题不够完整,我们无法提供帮助。您是否也在使用Prototype jQuery?有什么错误?是的,我使用原型上的magento。一旦我将上述代码添加到我的页面中,它就会破坏缩放并给出“不是函数”错误是指向错误页面的链接没有修复缩放的运气,但如果我删除上述代码,效果会很好。我是否与此脚本或缩放有冲突?页面是:您是否查看了控制台日志?你有很多js文件404,这导致了未捕获的TypeError。要在Chrome中访问控制台,请单击View»Developer»Javascript控制台我看到了这些404,但不相信这是问题的原因。有一些404图像,但我在添加代码时看到了这些,因为我在上面粘贴的accorian菜单不是一个函数