jQuery和其他库,以及'$'的用法

时间:2009-07-21 11:21:15

标签: jquery

我有一个快速的,初学者类型的问题。如果我要使用jQuery和其他一些框架,那么下面的陈述会有问题:

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

也就是说,在.ready()函数中使用'$'。 '$'应该用'jQuery'代替,以避免冲突吗?

6 个答案:

答案 0 :(得分:6)

是的,如果您正在使用另一个使用$的库,您可以使用完整格式jQuery或在no-conflict mode中设置jQuery。 E.g:

<script>
     jQuery.noConflict();

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

     // Use Prototype with $(...), etc.
     $('someid').hide();
   </script>

在防止与其他库冲突的同时从短名称中受益的另一种方法是做这样的事情:

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

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

     // Use Prototype with $(...), etc.
     $('someid').hide();
</script>

我建议读这个:

http://docs.jquery.com/Using_jQuery_with_Other_Libraries

答案 1 :(得分:2)

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

var $jq = jQuery.noConflict();

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

在插件开发中,处理此问题的常用方法是将`$'作为参数传递给定义插件定义的函数,并将该函数应用于jQuery对象。

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

答案 2 :(得分:1)

您所显示的内容是正确的,但您需要替换所有的'$'实例。然后,您将覆盖'$'函数。

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

你可以将jQuery代码部分包装成这样的函数:

function($) {
    // jQuery code here
}(jQuery);

// use $ here to access other JS library

并且您将能够在函数内部使用$(这是将$映射到jQuery的自执行函数。

答案 5 :(得分:1)

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

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