Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.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-noConflict()问题_Javascript_Jquery - Fatal编程技术网

Javascript jQuery-noConflict()问题

Javascript jQuery-noConflict()问题,javascript,jquery,Javascript,Jquery,我有一个问题,可能是关于我如何做这件事的范围 滑块中的任何一个都可以工作。或者图像将替换文本。但不是两者都有 我必须链接这个“scrollbox.min.js”文件才能让滑块工作。因此我使用noConflict 我希望下面的代码段使用scrollbox.min.js文件: <script> jQuery().noConflict(); jQuery(function($) { $(document).ready(function() { j

我有一个问题,可能是关于我如何做这件事的范围

滑块中的任何一个都可以工作。或者图像将替换文本。但不是两者都有

我必须链接这个“scrollbox.min.js”文件才能让滑块工作。因此我使用noConflict

我希望下面的代码段使用scrollbox.min.js文件:

<script>
  jQuery().noConflict();
  jQuery(function($) {
        $(document).ready(function() {
          jQuery('#scrool').scrollbox({
            direction: 'h',
            switchItems: 3,
            distance: 540,
            autoPlay: false
          });
          jQuery('#scrool-backward').click(function() {
            jQuery('#scrool').trigger('backward');
          });
          jQuery('#scrool-forward').click(function() {
            jQuery('#scrool').trigger('forward');
          });
        })
      }
</script>

jQuery().noConflict();
jQuery(函数($){
$(文档).ready(函数(){
jQuery(“#scrool”).scrollbox({
方向:‘h’,
开关项目:3,
距离:540,
自动播放:错误
});
jQuery(“#scrool backward”)。单击(函数(){
jQuery('#scrool')。触发器('backward');
});
jQuery(“#scrool forward”)。单击(函数(){
jQuery(“#scrool”).trigger('forward');
});
})
}
我希望其他人使用该站点的jQuery

我注意到了一件事:

<script src="http://www.qwerty.com/assets/xjs/jquery.scrollbox.min.js"></script>
<script>
  jQuery().noConflict();
  jQuery(function($) {
    $(document).ready(function() {
      jQuery('#scrool').scrollbox({
        direction: 'h',
        switchItems: 3,
        distance: 540,
        autoPlay: false
      });
      jQuery('#scrool-backward').click(function() {
        jQuery('#scrool').trigger('backward');
      });
      jQuery('#scrool-forward').click(function() {
        jQuery('#scrool').trigger('forward');
      });
    });
  });

</script>

<script>
  jQuery(function($) {
    $(document).ready(function() {

      jQuery('.starIMGrating').each(function(i, obj) {

        var myString = jQuery(this).html()

        if (myString > "5") {
          var myString = "5"
        } else {}

        /* alert(myString); */
        myRegexp3 = /\d/;
        var match = myRegexp3.exec(myString);

        var myRegexp2 = /\d\.(\d)/;
        var matchstring = myString;
        var m;

        if (myString.indexOf(".") == -1) {
          var match2 = 0;
        } else if (myString.indexOf(".") == 1) {
          var m = myRegexp2.exec(matchstring)
          var match2 = m[1];
        }

        starIMG = "<img src='http://qwerty/" + match + "_" + match2 + "/5/rating.gif' alt='' style='width:70px !important;' />";

        /*alert(match2); */
        jQuery(this).html(starIMG);
        /* alert(starIMG); */
      });

    });
  });

</script>
根据我放置jQuery().noConflict()的位置,它允许执行不同的代码段。不过,我需要两者都工作:

请参见下面的脚本完整部分:

<script src="http://www.qwerty.com/assets/xjs/jquery.scrollbox.min.js"></script>
<script>
  jQuery().noConflict();
  jQuery(function($) {
    $(document).ready(function() {
      jQuery('#scrool').scrollbox({
        direction: 'h',
        switchItems: 3,
        distance: 540,
        autoPlay: false
      });
      jQuery('#scrool-backward').click(function() {
        jQuery('#scrool').trigger('backward');
      });
      jQuery('#scrool-forward').click(function() {
        jQuery('#scrool').trigger('forward');
      });
    });
  });

</script>

<script>
  jQuery(function($) {
    $(document).ready(function() {

      jQuery('.starIMGrating').each(function(i, obj) {

        var myString = jQuery(this).html()

        if (myString > "5") {
          var myString = "5"
        } else {}

        /* alert(myString); */
        myRegexp3 = /\d/;
        var match = myRegexp3.exec(myString);

        var myRegexp2 = /\d\.(\d)/;
        var matchstring = myString;
        var m;

        if (myString.indexOf(".") == -1) {
          var match2 = 0;
        } else if (myString.indexOf(".") == 1) {
          var m = myRegexp2.exec(matchstring)
          var match2 = m[1];
        }

        starIMG = "<img src='http://qwerty/" + match + "_" + match2 + "/5/rating.gif' alt='' style='width:70px !important;' />";

        /*alert(match2); */
        jQuery(this).html(starIMG);
        /* alert(starIMG); */
      });

    });
  });

</script>

jQuery().noConflict();
jQuery(函数($){
$(文档).ready(函数(){
jQuery(“#scrool”).scrollbox({
方向:‘h’,
开关项目:3,
距离:540,
自动播放:错误
});
jQuery(“#scrool backward”)。单击(函数(){
jQuery('#scrool')。触发器('backward');
});
jQuery(“#scrool forward”)。单击(函数(){
jQuery(“#scrool”).trigger('forward');
});
});
});
jQuery(函数($){
$(文档).ready(函数(){
jQuery('.starIMGrating')。每个(函数(i,obj){
var myString=jQuery(this.html())
如果(myString>“5”){
var myString=“5”
}else{}
/*警报(myString)*/
myRegexp3=/\d/;
var match=myRegexp3.exec(myString);
var myRegexp2=/\d\(\d)/;
var matchstring=myString;
var-m;
if(myString.indexOf(“.”)==-1){
var-match2=0;
}else if(myString.indexOf(“.”==1){
var m=myRegexp2.exec(匹配字符串)
var match2=m[1];
}
starIMG=“”;
/*警报(匹配2)*/
jQuery(this.html)(starIMG);
/*警报(starIMG)*/
});
});
});
调用
jQuery().noConflict();
将抛出错误:

未捕获类型错误:jQuery(…)。noConflict不是函数

当它不在
try{…}
块中时,将导致该脚本的其余部分根本不执行

noConflict
是主
jQuery
命名空间对象的一部分,但不是单个jQuery对象,因此您应该从
jQuery()
中删除括号:

有关更多信息,请参见此链接:

请参见:

你会得到:

jQuery.noConflict();
(function($) {
  $(document).ready(function() {
    $('#scrool').scrollbox({
      direction: 'h',
      switchItems: 3,
      distance: 540,
      autoPlay: false
    });
    $('#scrool-backward').click(function() {
      $('#scrool').trigger('backward');
    });
    $('#scrool-forward').click(function() {
      $('#scrool').trigger('forward');
    });
  });
}(jQuery);

这里基本上有两个jquery库实例(jquery库文件在页面中添加了两次),所以更简单的解决方案是只有一个jquery库实例,所以如果您能够以某种方式添加单个实例,那么对您来说就相当容易了,我很好奇为什么这不可能

另一方面,如果您无法删除额外的jQuery实例,那么您可以做一件事,将最新的jQuery实例保存在特定于页面的变量中,然后不调用冲突

var $$ = $;
jQuery.noConflict();
$$('#scroll').scrollbox({})

因此,您可以将scrollbox与$$一起使用,即$$('#scroll')。scrollbox({})和其他东西与单个$

一起使用。正如其他人提到的,您需要使用
jQuery.noConflict()
,但每当调试类似的东西时,您都希望最小化所有移动部件。下面我将描述的内容可能不会给您带来任何问题,但它突出了一个非常明显的jQuery滥用,您应该尝试并遵循。您有以下代码:

jQuery(function ($) {
  $(document).ready(function(){
    ...
  });
});
这相当于编写以下内容:

jQuery(document).ready(function ($) {
  $(document).ready(function(){
    ...
  });
});
你看到口是心非了吗?让我解释一下:

  • 以下两行是相同的:

    $(function() { /* execute code */ });
    $(document).ready(function () { /* execute code */ });
    
    因此,当你像以前那样将其中一个放在另一个里面时,你实际上是在说“等待文档准备就绪,然后等待文档再次准备就绪,然后执行代码”。这是多余和不必要的

  • 无论何时使用上述“document ready”语句,您都可以为jQuery指定一个不同的名称,以便在回调函数中使用。例如,如果需要,我们可以将jQuery重命名为
    fOobar

    $(function(fOobar) {
        fOobar('#scroll').trigger('forward');
    });
    
  • 上述技术在使用
    noConflict()
    时特别有用。没有人喜欢键入
    jQuery
    ,因为
    $
    美元符号要容易得多。但是
    noConflict()
    表示您不能使用美元符号。要解决此问题,我们可以将jQuery重新命名为美元符号,而不会影响页面上的其他代码:

    jQuery.noConflict();
    jQuery(function ($) {
      // you can safely use the dollar sign variable inside this function
      // instead of the cumbersome `jQuery` variable.
    });
    
  • 最后,每次将选择器传递给jQuery时,都需要进行大量工作才能在页面中找到该元素。为了防止jQuery变得太累,我们可以保存(或缓存)jQuery所做的工作并重用它。如果缓存
    #scroll
    元素,则代码的外观如下:

    jQuery.noConflict();
    jQuery(function ($) {
      // get the #scroll element once and reuse it
      var $scroller = $('#scroll');
      $scroller.scrollbox({
        direction: 'h',
        switchItems: 3,
        distance: 540,
        autoPlay: false
      });
      $('#scrool-backward').click(function() {
        $scroller.trigger('backward');
      });
      $('#scrool-forward').click(function() {
        $scroller.trigger('forward');
      });
    });
    

  • 我不确定这是否有帮助,但请尝试以下
    jQuery.noConflict();
    或者尝试使用noConflict为jquery对象添加别名,并根据插件依赖关系在需要的地方使用新的别名。我一直在尝试,但似乎没有正确的方法。您能为它创建fiddle吗?这非常有用-谢谢!但我注意到我使用的是:jquery().noConflict();-因为我在使用它,它破坏了代码,从而允许另一个脚本运行。当我进行更改时-两个都不起作用-这真的很有用-谢谢!但我注意到我在使用:jQuery().noConflict();-因为我在使用它,它破坏了代码