jQuery和其他库,以及'$';

jQuery和其他库,以及'$';,jquery,Jquery,我有一个快速的初学者类型的问题。如果我使用jQuery和其他框架,下面的语句会有问题吗 jQuery(document).ready(function () { $("input[name='password']").focus(function () { $("input[value='login']").attr("checked", "checked"); }); }); 也就是说,在.ready()函数中使用“$”。是否应将“$”替换为“jQuery”以

我有一个快速的初学者类型的问题。如果我使用jQuery和其他框架,下面的语句会有问题吗

jQuery(document).ready(function () {
    $("input[name='password']").focus(function () {
        $("input[value='login']").attr("checked", "checked");
    });
});

也就是说,在.ready()函数中使用“$”。是否应将“$”替换为“jQuery”以避免冲突?

是的,如果您使用的是另一个使用$的库,则可以使用完整形式的jQuery或在中设置jQuery。例如:


jQuery.noConflict();
//通过jQuery(…)使用jQuery
jQuery(文档).ready(函数(){
jQuery(“div”).hide();
});
//将原型与$(…)等一起使用。
$('someid').hide();
另一种利用短名称同时防止与其他库冲突的方法是执行以下操作:

<script>
     var $j = jQuery.noConflict();

     // Use jQuery via $j(...)
     $j(document).ready(function(){
       $j("div").hide();
     });

     // Use Prototype with $(...), etc.
     $('someid').hide();
</script>
function($) {
    // jQuery code here
}(jQuery);

// use $ here to access other JS library

var$j=jQuery.noConflict();
//通过$j(…)使用jQuery
$j(文档).ready(函数(){
$j(“div”).hide();
});
//将原型与$(…)等一起使用。
$('someid').hide();
我建议阅读以下内容:


您显示的内容是正确的,只是您希望替换“$”的所有实例。然后将重写“$”函数

jQuery(document).ready(function () {
    jQuery("input[name='password']").focus(function () {
        jQuery("input[value='login']").attr("checked", "checked");
    });
});

当然,要使代码尽可能明确-尤其是在这种情况下。如果站点稍后更改,您可能会调用错误的库。

您可以将jQuery代码部分包装成如下函数:

<script>
     var $j = jQuery.noConflict();

     // Use jQuery via $j(...)
     $j(document).ready(function(){
       $j("div").hide();
     });

     // Use Prototype with $(...), etc.
     $('someid').hide();
</script>
function($) {
    // jQuery code here
}(jQuery);

// use $ here to access other JS library

您将能够在函数中使用$(这是一个将$映射到jQuery的自执行函数。

当使用多个使用
$
的库时,通常的做法是使用noConflict模式并将jQuery的
$
重新分配给其他库

var $jq = jQuery.noConflict();

$jq( function() {
    $jq("input[name='password']").focus( function() {
        $jq("input[value='login']").attr("checked","checked");
    });
});
在插件开发中,处理此问题的常用方法是将`$作为参数传递给定义插件定义的函数,并将该函数应用于jQuery对象

;(function($) {
    ...
})(jQuery);

Callback for ready()将jQuery作为参数接收:您可以调用此参数$。这将覆盖回调范围内的其他$定义。

@SilentGhost,谢谢。我正在寻找一个类似的问题,以便不再问同样的问题,但找不到任何内容。第二个选项可能更合适(经常使用)对于插件开发。因此建议的选项是使用.noConflict()或简单的“jQuery”。我只是想猜测最佳实践:-)我会说,对于直接包含在页面上的简短代码,我将使用noConflict模式。输入jQuery不需要太多次,您就会喜欢走捷径——这就是为什么首先要有$a的原因。对于较长的、自包含的代码(如插件),使用函数语法会更好、更容易,因为您可以使用快捷方式,并且始终需要注意可能存在冲突。