2013-08-17 63 views
2

我在将两个jQuery脚本放在同一页上时遇到问题,我该怎么办?两个jQuery脚本在同一页上发生冲突

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> 
<script type="text/javascript" src="js/jquery.slidepanel.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $('[data-slidepanel]').slidepanel({ 
      orientation: 'left', 
      mode: 'push' 
     }); 
    }); 

</script> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script src="js/jquery.mixitup.min.js"></script> 
<script type="text/javascript"> 
    $(function() { 
     $('#Grid').mixitup(); 
    }); 
</script> 

我知道jQuery.noConflict()可以解决这个问题,但我不知道如何将它应用到这一点。任何帮助?

+2

你为什么加载了jQuery两次? jQuery 1.9.1支持1.9.0不支持什么? – undefined

+2

您应该只需要JQuery的一个副本。我无法想象1.9.0与1.9.1的不同之处在于你需要同时包含两者。拿出旧版本,你可能会发现它工作得很好。 – Chris

+0

[两个jQuery对象冲突]可能重复(http://stackoverflow.com/questions/14593753/two-jquery-object-conflict) – Chris

回答

3
  1. 您只需要jQuery的一个副本,如同每个人都在说的那样。建议您使用Google CDN,正如解释here所述。

  2. 如果它仍然无法正常工作,请单独尝试每个代码元素。因此请重新格式化您的代码。您会注意到我为其中一个脚本添加了type="text/javascript"

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script type="text/javascript" src="js/jquery.slidepanel.js"></script> 
<script type="text/javascript" src="js/jquery.mixitup.min.js"></script> 

<script type="text/javascript"> 
    (function($){ // Self-executing wrapper that sets $=jQuery 
     $(function() { // Fires onload 
      $('[data-slidepanel]').slidepanel({ 
       orientation: 'left', 
       mode: 'push' 
      }); 
      $('#Grid').mixitup(); 
     }); 
    }(jQuery)); 
</script> 

然后尝试注释掉两个$('...报表,看看一个或两个的工作。

1

为什么你还需要两个jQuery库?只要使用新的! ...让我们甚至说你需要一个旧的,因为你需要一些在新框架中不可用的功能。只需在搜索模式下查看它们,并将它们逐一复制到新框架中(只能在像我这样离线使用jQuery的情况下完成,这样可以节省开发过程中的加载时间,从而缓存它。) PS:我希望这样做不会导致任何版权问题:/

+0

复制jQuery是没有问题的 - 没有侵犯版权的行为。这里有一篇文章为什么CDN更可取:http://encosia.com/3-reasons-why-you-should-let-google-host-jquery-for-you/ – Nick