Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery在一个页面上与另一个冲突_Javascript_Jquery_Html_Performance_Jquery Ui - Fatal编程技术网

Javascript jQuery在一个页面上与另一个冲突

Javascript jQuery在一个页面上与另一个冲突,javascript,jquery,html,performance,jquery-ui,Javascript,Jquery,Html,Performance,Jquery Ui,我的jQuery noConflict有问题。我试图放置jQuery的页面有一个下拉导航,它已经使用了noConflict()规则。我可以在一个页面上为不同的动画使用多个NOCONFLICT吗?我将在一个页面上同时运行3个不同的jQuery函数。单独使用它们可以很好地工作,但一旦将它们添加到一个页面上,它们就会停止工作。下面是需要运行的jQuery之一。有人能帮我添加noConflict()规则吗 $(function() { var current = 1; var iterate = f

我的jQuery noConflict有问题。我试图放置jQuery的页面有一个下拉导航,它已经使用了noConflict()规则。我可以在一个页面上为不同的动画使用多个NOCONFLICT吗?我将在一个页面上同时运行3个不同的jQuery函数。单独使用它们可以很好地工作,但一旦将它们添加到一个页面上,它们就会停止工作。下面是需要运行的jQuery之一。有人能帮我添加noConflict()规则吗

$(function() {
var current = 1;


var iterate = function(){
    var i = parseInt(current+1);
    var lis = $('#rotmenu').children('li').size();
    if(i>lis) i = 1;
    display($('#rotmenu li:nth-child('+i+')'));
}
display($('#rotmenu li:first'));
var slidetime = setInterval(iterate,5000);

$('#rotmenu li').bind('click',function(e){
    clearTimeout(slidetime);
    display($(this));
    e.preventDefault();
});

function display(elem){
    var $this   = elem;
    var repeat  = false;
    if(current == parseInt($this.index() + 1))
        repeat = true;

    if(!repeat)
        $this.parent().find('li:nth-child('+current+') a').stop(true,true).animate({'marginRight':'-20px'},300,function(){
            $(this).animate({'opacity':'0.7'},700);
        });

    current = parseInt($this.index() + 1);

    var elem = $('a',$this);

        elem.stop(true,true).animate({'marginRight':'0px','opacity':'1.0'},300);

    var info_elem = elem.next();
    $('#rot1 .heading').animate({'left':'-420px'}, 500,'easeOutCirc',function(){
        $('h1',$(this)).html(info_elem.find('.info_heading').html());
        $(this).animate({'left':'0px'},400,'easeInOutQuad');
    });

    $('#rot1 .description').animate({'bottom':'-270px'},500,'easeOutCirc',function(){
        $('p',$(this)).html(info_elem.find('.info_description').html());
        $(this).animate({'bottom':'0px'},400,'easeInOutQuad');
    })
    $('#rot1').prepend(
    $('<img/>',{
        style   :   'opacity:0',
        className : 'bg'
    }).load(
    function(){
        $(this).animate({'opacity':'1'},600);
        $('#rot1 img:first').next().animate({'opacity':'0'},700,function(){
            $(this).remove();
        });
    }
).attr('src', info_elem.find('.info_image').html())
);
}
$(函数(){
无功电流=1;
var iterate=函数(){
var i=parseInt(当前+1);
var lis=$('#rotmenu').children('li').size();
如果(i>lis)i=1;
显示($('#rotli:n子项('+i+')));
}
显示($('rotli:first');
var slidetime=setInterval(迭代,5000);
$('#rotmenu li')。绑定('单击',函数(e){
clearTimeout(slidetime);
显示($(此));
e、 预防默认值();
});
功能显示(elem){
var$this=elem;
var repeat=false;
if(current==parseInt($this.index()+1))
重复=正确;
如果(!重复)
$this.parent(){
动画({'opacity':'0.7'},700);
});
current=parseInt($this.index()+1);
var elem=$('a',$this);
元素停止(真,真)。设置动画({'marginRight':'0px','opacity':'1.0'},300);
var info_elem=elem.next();
$(#rot1.heading').animate({'left':'-420px'},500,'easeOutCirc',function(){
$('h1',$(this)).html(info_elem.find('info_heading').html());
$(this.animate({'left':'0px'},400,'easeInOutQuad');
});
$('rot1.description')。动画({'bottom':'-270px'},500,'easeOutCirc',function(){
$('p',$(this)).html(info_elem.find('info_description').html());
动画({'bottom':'0px'},400,'easeInOutQuad');
})
$('#rot1')。前置(
$('

})

正如@adaneo已经评论过的,您应该始终将代码包装到jQuery方法中,但在这之后,您甚至应该使用第一个参数true调用noConflict:

这将从jQuery和$变量中完全删除jQuery,并返回一个jQuery对象。您可以将该返回值作为参数提供给对象或方法,从而在代码中使用该返回值:

function MyFunction($) {
    $(doSomeThing);
}
MyFunction($.noConflict(true));

只需使用
jQuery(function($){…});
来包装代码,而不是像现在这样。你真的需要包含一个版本的jQuery,而不是每个小部件都包含一个版本。@Pointy如果所有小部件都调用同一版本的jQuery怎么办?@user3015352,那么你只需要导入一次。
function MyFunction($) {
    $(doSomeThing);
}
MyFunction($.noConflict(true));