Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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 将noConflict()与jquery库一起使用_Javascript_Jquery_Libraries_Conflict - Fatal编程技术网

Javascript 将noConflict()与jquery库一起使用

Javascript 将noConflict()与jquery库一起使用,javascript,jquery,libraries,conflict,Javascript,Jquery,Libraries,Conflict,我使用jquery脚本作为下拉菜单,使用jquery脚本作为图像查看器。这两个库发生冲突 下面的脚本是我的库,我注意到了两个相互冲突的脚本。第一个块位于脚本的标题中,第二个块位于标记之前(这是图像滑块脚本工作的唯一方式) //初始化没有自定义选项的插件 $(文档).ready(函数(){ //没有设置任何选项 $(“div#makeMeScrollable”).smoothDivScroll({ manualContinuousScrolling:正确, 自交共线性模式:“”, 可见热点背景:

我使用jquery脚本作为下拉菜单,使用jquery脚本作为图像查看器。这两个库发生冲突

下面的脚本是我的库,我注意到了两个相互冲突的脚本。第一个块位于脚本的标题中,第二个块位于标记之前(这是图像滑块脚本工作的唯一方式)


//初始化没有自定义选项的插件
$(文档).ready(函数(){
//没有设置任何选项
$(“div#makeMeScrollable”).smoothDivScroll({
manualContinuousScrolling:正确,
自交共线性模式:“”,
可见热点背景:“始终”
});
});
我尝试了以下两个脚本,第一个脚本不解决冲突,第二个脚本导致页面无法加载(这是一个空白页面,只显示背景色)。有可能是我使用的脚本不正确

    <script src="prototype.js"></script>
    <script src="jquery.js"></script>
    <script>

    var $j = jQuery.noConflict();
    // $j is now an alias to the jQuery function; creating the new alias is optional.

    $j(document).ready(function() {
        $j( "div" ).hide();
    });

    // The $ variable now has the prototype meaning, which is a shortcut for
    // document.getElementById(). mainDiv below is a DOM element, not a jQuery object.
    window.onload = function() {
        var mainDiv = $( "main" );
    }

    </script>

var$j=jQuery.noConflict();
//$j现在是jQuery函数的别名;创建新别名是可选的。
$j(文档).ready(函数(){
$j(“div”).hide();
});
//$变量现在具有原型含义,这是
//document.getElementById()。下面的mainDiv是一个DOM元素,而不是jQuery对象。
window.onload=函数(){
var mainDiv=$(“主”);
}
脚本2:

        <script src="prototype.js"></script>
        <script src="jquery.js"></script>
        <script>

        jQuery.noConflict();

        jQuery( document ).ready(function( $ ) {
            // You can use the locally-scoped $ in here as an alias to jQuery.
            $( "div" ).hide();
        });

        // The $ variable in the global scope has the prototype.js meaning.
        window.onload = function(){
            var mainDiv = $( "main" );
        }

        </script>

jQuery.noConflict();
jQuery(文档).ready(函数($){
//您可以在这里使用本地范围的$作为jQuery的别名。
$(“div”).hide();
});
//全局范围中的$variable具有prototype.js的含义。
window.onload=函数(){
var mainDiv=$(“主”);
}

我不知道第一个例子中“不解决冲突”是什么意思。但在第二个例子中,你确定它实际上工作得不完美吗?您可以在那里编写代码,以便在文档准备就绪后立即隐藏整个页面上的所有div(
$(“div”).hide();
)。这很可能会导致页面除了背景色之外看起来是空的。

这太可怕了,请尽量保持最小的顺序,您只需要包含一次jQuery。您知道您包含了两次完全相同版本的jQuery UI吗?@lvaroG.Vicario请注意名称中的
.custom.
。它可能是两个不同的“自定义”ui版本。你可以只包含你想要的组件。你试过$(function($)({var mainDiv=$(“main”);})吗?那些库真的需要不同版本的jQuery吗?如果是这样,你真的应该删除使用旧版本的库。我抓到了noConflict()来自网站的代码,我实际上不知道它是做什么的。你能解释一下脚本中发生了什么,我如何改变它,使两个库一起工作,而不是让所有的东西都消失吗?啊,我明白了。noConflict()函数删除了它与变量“$”的关联因此,您可以使用其他库尝试将某些内容分配给“$”(或者,您可以在同一页上使用多个jQuery版本,但这并不推荐)。因此,您可以使用函数的返回值来分配新变量,而不是$,或者您可以在使用“$”的任何位置使用“jQuery”。或者,正如示例代码所示,您可以使用一个局部作用域,其中jQuery对象作为“$”传递到一个方法中。但是,当使用noConflict()时,我更喜欢不使用$作为变量,因为它使读取代码变得非常混乱-人们倾向于使用“$”为了始终引用jQuery对象,而不是到处更改其含义。因此,我应该将noConflict()代码改为“jQuery”而不是“$”?这会如何更改任何内容?发生了什么(假设这里确实存在冲突,我不知道prototype.js),这两个库都在为名为“$”的变量赋值。最简单的解决方案是加载prototype.js,然后加载jquery.js,然后调用
jquery.noConflict();
使jquery避免使用“$”,因此从那时起“$”不再引用jquery对象。从那时起,凡是通常使用“$”引用jquery对象的地方,请使用“jquery”相反,prototype可能与此不冲突。(即使没有noConflict(),也可以这样做,因为“$”只是“jQuery”的简写形式)
        <script src="prototype.js"></script>
        <script src="jquery.js"></script>
        <script>

        jQuery.noConflict();

        jQuery( document ).ready(function( $ ) {
            // You can use the locally-scoped $ in here as an alias to jQuery.
            $( "div" ).hide();
        });

        // The $ variable in the global scope has the prototype.js meaning.
        window.onload = function(){
            var mainDiv = $( "main" );
        }

        </script>