Jquery Conflict给出了错误

时间:2013-05-27 14:47:09

标签: javascript jquery-ui jquery jquery-plugins

处理具有各种功能的项目,例如

  • Google翻译
  • Image Slider [使用galleriffic]
  • 弹出窗口[使用阴影框]
  • JavaScript水平菜单栏*

现在我们遇到了jquery冲突和错误消息,例如 Error Message

我知道当代码找不到jquery文件但文件存在时会发生这样的消息。

以下是项目中使用的文件列表 这是谷歌翻译所需要的

    1.<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
    2. <script type="text/javascript" src="//jquery-translate.googlecode.com/files/jquery.translate-1.3.7.min.js"></script>
    3. <script type="text/javascript" src="/scripts/jQuery/jquery.cookie.js"></script>
    4.  <script type="text/javascript" src="/scripts/jquery.bt.js"></script>
    5. <script type="text/javascript" src="/scripts/jquery-ui-1.8.21.custom.min.js"></script>
    6. <script type="text/javascript" src="/fancybox/jquery.fancybox.pack.js"></script>
    7. <script type="text/javascript" src="/scripts/common.js"></script>

这个是滑块

    1.  <script type="text/javascript" src="/SliderBox/js/jquery-1.3.2.js"></script>
    2.  <script type="text/javascript" src="/SliderBox/js/jquery.galleriffic.js"></script>
    3.  <script type="text/javascript" src="/SliderBox/js/jquery.opacityrollover.js"></script>

这是针对弹出窗口的

    1. <script type="text/javascript" src="/SliderBox/js/prototype.js"></script>
    2. <script type="text/javascript" src="/SliderBox/js/effects.js"></script>
    3. <script type="text/javascript" src="/SliderBox/js/lightwindow.js"></script>
    4. <script type="text/javascript" src="/SliderBox/shadowbox/shadowbox.js"></script>

水平菜单需要这个

    1. <script type="text/javascript" src="./jquery-1.9.1.min.js"></script>
    2. <script src="../scripts/jquery.als-1.1.min.js" type="text/javascript"></script>
    3. <script src="../scripts/settingsEN.js" type="text/javascript"></script>

我优化了所有这些并且只包含了一个jquery-1.9.1.min.js的jquery文件 但仍无法消除冲突 以下是我使用的序列

    1. <script type="text/javascript" src="./jquery-1.9.1.min.js"></script>
    2.<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
    3. <script type="text/javascript" src="//jquery-translate.googlecode.com/files/jquery.translate-1.3.7.min.js"></script>
    4. <script type="text/javascript" src="/scripts/jQuery/jquery.cookie.js"></script>
    5.  <script type="text/javascript" src="/scripts/jquery.bt.js"></script>
    6. <script type="text/javascript" src="/scripts/jquery-ui-1.8.21.custom.min.js"></script>
    7. <script type="text/javascript" src="/fancybox/jquery.fancybox.pack.js"></script>
    8. <script type="text/javascript" src="/scripts/common.js"></script>
    9. <script type="text/javascript" src="/SliderBox/js/jquery.galleriffic.js"></script>
    10.  <script type="text/javascript" src="/SliderBox/js/jquery.opacityrollover.js"></script>
    11.<script type="text/javascript" src="/SliderBox/js/prototype.js"></script>
    12. <script type="text/javascript" src="/SliderBox/js/effects.js"></script>
    13. <script type="text/javascript" src="/SliderBox/js/lightwindow.js"></script>
    14. <script type="text/javascript" src="/SliderBox/shadowbox/shadowbox.js"></script>
    15.<script src="../scripts/jquery.als-1.1.min.js" type="text/javascript"></script>
    16. <script src="../scripts/settingsEN.js" type="text/javascript"></script>

我尝试了所有这些

http://api.jquery.com/jQuery.noConflict/

http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/?rdfrom=http%3A%2F%2Fdocs.jquery.com%2Fmw%2Findex.php%3Ftitle%3DUsing_jQuery_with_Other_Libraries%26redirect%3Dno

http://www.w3schools.com/jquery/jquery_noconflict.asp

我尝试了所有这些

 <script type="text/javascript" src="other_lib.js"></script>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript">
 $.noConflict();
 // Code that uses other library's $ can follow here.
 </script>

 <script type="text/javascript" src="other_lib.js"></script>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript">
 $.noConflict();
 jQuery(document).ready(function($) {
 // Code that uses jQuery's $ can follow here.
  });
 // Code that uses other library's $ can follow here.
 </script>

jQuery.noConflict();
(function($) {
 $(function() {
  // more code using $ as alias to jQuery
 });
})(jQuery);
// other code using $ as an alias to the other library

但仍然无法获得解决方案

当我删除这个滑块代码时,一切正常,没有错误,但滑块不起作用

 <!--script for slider--->

      <script type="text/javascript">

  jQuery(document).ready(function($) {
    // We only want these styles applied when javascript is enabled
    $('div.navigation').css({'width' : '', 'float' : 'right'});
    $('div.content').css('display', 'block');

    // Initially set opacity on thumbs and add
    // additional styling for hover effect on thumbs
    var onMouseOutOpacity = 0.67;
    $('#thumbs ul.thumbs li').opacityrollover({
      mouseOutOpacity:   onMouseOutOpacity,
      mouseOverOpacity:  1.0,
      fadeSpeed:         'fast',
      exemptionSelector: '.selected'
    });

    // Initialize Advanced Galleriffic Gallery
    var gallery = $('#thumbs').galleriffic({
      delay:                     2500,
      numThumbs:                 15,
      preloadAhead:              10,
      enableTopPager:            true,
      enableBottomPager:         true,
      maxPagesToShow:            7,
      imageContainerSel:         '#slideshow',
      controlsContainerSel:      '#controls',
      captionContainerSel:       '#caption',
      loadingContainerSel:       '#loading',
      renderSSControls:          true,
      renderNavControls:         true,
      random:                    true,
      prevLinkText:              '',
      nextLinkText:              '',
      nextPageLinkText:          '',
      playLinkText:              '',
      pauseLinkText:             '',
      prevPageLinkText:          '',
      enableHistory:             false,
      autoStart:                 false,
      syncTransitions:           true,
      defaultTransitionDuration: 900,
      onSlideChange:             function(prevIndex, nextIndex) {
        // 'this' refers to the gallery, which is an extension of $('#thumbs')
        this.find('ul.thumbs').children()
          .eq(prevIndex).fadeTo('fast', onMouseOutOpacity).end()
          .eq(nextIndex).fadeTo('fast', 1.0);
      },
      onPageTransitionOut:       function(callback) {
        this.fadeTo('fast', 0.0, callback);
      },
      onPageTransitionIn:        function() {
        this.fadeTo('fast', 1.0);
      }
    });
  });
</script>



  <!--script end--->

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:3)

尝试在jQuery中使用.noConflict()

<script  src="....../jquery-1.8.3.min.js"></script> 
<script type="text/javascript">
var jQuery_1_8_3 = $.noConflict(true);
</script>

<script type="text/javascript" src="...../jquery-1.4.2.js"></script>
<script type="text/javascript">
var jQuery_1_4_2= $.noConflict(true);
</script>

答案 1 :(得分:3)

我阅读了您的问题,并在网站上搜索您使用的每个插件。

如果插件缺少某些内容,请将其发布。

我遇到了类似的问题而我没有使用$.noConflict(true);

如果你的项目是服务器,当它打开时取文件html。

我建议您在一个文件html中插入外部div的调用。

在每个文件html中,您都可以使用

编写脚本
 $(document).ready(function () {
   .............
    });

您无法在每个文件html中调用外部文件,因为这会产生正常冲突。

并..

我建议此网站查看最后的图书馆... Google-libraries-last

并..

I have optimized all these and have included only one jquery file of jquery-1.9.1.min.js but still not able to clear the conflict Here is the sequence used by me

这样更好。

并:::

错误TypeError: $ is not a function取决于此函数的实现或写入方式。 可能的错误是;{}() 发生这种情况是因为已经加载了另一个javascript库并覆盖了jQuery的对象$()快捷方式。 因此,当我们在jquery之外包含其他javascript库时,我们将jquery库暴露给冲突。 许多JavaScript库使用$作为函数或变量名,就像jQuery一样。在jQuery的情况下,$只是jQuery的别名,因此所有功能都可以在不使用$的情况下使用。 一个解决方案是,如果我们需要在jQuery旁边使用另一个JavaScript库,我们可以通过调用$$.noConflict()的控制权返回给另一个库,如:

<script type="text/javascript" src="mootools.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
  $.noConflict();
  jQuery(document).ready(function($) {
    // Code that uses jQuery's $ follow here.
  });
  // Code that uses other library's $ follow here.
</script>

另一个解决方案是将jquery对象$()重新分配回jquery库,在一个重新分配$()对象的函数内包含我们的调用。因此,我们确保我们的代码不会与Prototype,Scriptaculous等混淆。

( function($) {
 // Your jquery code
} ) ( jQuery );

假设:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/scriptaculous.js" type="text/javascript"></script>

<script type="text/javascript">
( function($) {
    // Assigning $ again to jquery
    $(document).ready( function() { alert("Now you can use to use '$' in your jquery code");  } );
} ) ( jQuery );

//this will fail
$(document).ready( function() { alert('This fails because $ has been modified outside jquery'); } );
</script>

这种方法是一种自调用的匿名函数样式,以避免与jQuery冲突。如果你不使用它,那么你必须输入jQuery()而不是它的对象$()。 例如:

$(document) //won't work
jquery(document) //will work

JSFIDDLE.NET

上的示例

最后

Typeerror for null

查看jquery-documentready-controlid-is-null

答案 2 :(得分:1)

我选择了这个流程并且错误已经解决了。 不需要任何.noConflict()和!!!

1)<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
2)<script type="text/javascript" src="//jquery-translate.googlecode.com/files/jquery.translate-1.3.7.min.js"></script>
3)<script type="text/javascript" src="/scripts/jQuery/jquery.cookie.js"></script>
4)<script type="text/javascript" src="/scripts/jquery.bt.js"></script>
5)<script type="text/javascript" src="/fancybox/jquery.fancybox.pack.js"></script>
6)<script type="text/javascript" src="/scripts/common.js"></script>
7)<script src="/scripts/jQuery/insert_active_flash.js" type="text/javascript"></script>
8)<script type="text/javascript" src="/SliderBox/js/jquery.galleriffic.js"></script>
9)<script type="text/javascript" src="/SliderBox/js/jquery.opacityrollover.js"></script>
10)<script type="text/javascript" src="/SliderBox/shadowbox/shadowbox.js"></script>
11)<script type="text/javascript" src="/scripts/jquery.als-1.1.min.js"></script>
12)<script type="text/javascript" src="/scripts/settingsEN.js"></script>

与prototype.js发生冲突的缩小版本javascript。我刚刚删除了prototype.js文件并按顺序排列了所有参考文件[序列非常重要]

现在错误已被删除我仍然想知道prototype.js的实际问题是什么???