【问题标题】:What is the difference between $ and jQuery$和jQuery有什么区别
【发布时间】:2015-07-14 16:44:22
【问题描述】:

当我尝试在$(document).ready 中使用$("#div_id") 时它返回NULL,但是当我使用jQuery("#div_id") 时它返回实际对象!

为什么会这样?

更新:我尝试了 noConflict 方法,但没有获得任何提示。

jQuery.noConflict()
function (a,b){return new c.fn.init(a,b)}

$.noConflict();
TypeError: Object function ()
    {
        return document.getElementById.apply(document, arguments)
    } has no method 'noConflict'

更新 2:

$(document).ready(function() {
    debugger;
});

<input type="text" id="test" name="test" value="123" />

当我在控制台中运行以下代码时,我得到了这些结果:

$("#test").val()
TypeError: Cannot call method 'val' of null
jQuery("#test").val()
"123"

谢谢

【问题讨论】:

  • 听起来像萤火虫被覆盖 $ 是 document.getElementById
  • 我在没有启用firebug的情况下加载页面,有时它会提示错误,表明找不到该元素。但其他时候效果很好

标签: jquery


【解决方案1】:

jQuery.noConflict()。您页面上的其他 javascript 库是否可以使用 $ 变量?

$ 只是一个变量,用来给jQuery 取别名,作为一个变量,任何东西都可以赋值给它。

【讨论】:

  • 准确的别名是什么时候?我尝试在没有任何插件的新 html 页面上使用 jQuery("#checkbox1")#("#checkbox1"),第一个像魅力一样工作,另一个返回 NULL。我使用 jQuery 1.5.2 进行测试
  • @wael34218 嗯...很好奇,我需要先查看一些示例代码,然后才能猜测发生了什么。您能否发布一个重现此错误的简单页面?
  • 我又更新了帖子,请查收。如果我将警报显示为 $("#test")/jQuery("#test") 值而不是调试器,有时它会起作用,有时它不会
  • 我也是这么说的,但我的面试官似乎不同意这一点。 :(
【解决方案2】:

$jQuery 都相同,除了 $ 只是 jQuery 的别名,您可以使用 jQuery.noConflict 模式更改或删除它。

【讨论】:

  • 准确的别名是什么时候?我尝试在没有任何插件的新 html 页面上使用 jQuery("#checkbox1") 和 #("#checkbox1"),第一个像魅力一样工作,另一个返回 NULL。我使用 jQuery 1.5.2 进行测试
  • 尝试$("#checkbox1") 而不是#("#checkbox1")
  • 哈哈,这是我评论中的拼写错误,在我的代码中是 $("#checkbox1")
【解决方案3】:

$ 也用于Prototype.js,这是一个类似 jQuery 的 javascript 框架。 您的项目可能还包含对此框架的引用。

有关原型美元如何运作的更多信息,请转至here

如其他答案中所述,您可以使用 noConflict 语句使两者一起工作。我们正在我们的一个项目中执行此操作,该项目使用 $(element) 用于遗留原型代码,使用 jQuery(element) 用于新的 jQuery 代码。

【讨论】:

  • 我根本不使用原型,也不打算使用。我的想法是我只使用 jQuery 和 jQuery != $ ... 这让我很困惑
  • 这可能是因为您正在开发一个遗留应用程序,并且对其他 js 框架的引用较旧。如果不是这种情况,请忽略此答案 =)
  • 当我发现它时,我正在编写一个由古希腊人开发的非常古老的代码。但是当我在一个只包含 jquery 1.5.2 的新 html 文件上尝试它时,同样的问题出现了。
  • 它可以包含在您的母版页中吗?
  • 不,我不这么认为,我写了一个简单的html测试页面并引起了同样的行为。
【解决方案4】:

好像有什么东西拿走了$, 要将 jQuery 重新分配给 $,请尝试:

var $ = jQuery;

【讨论】:

    【解决方案5】:

    也许你有另一个使用 $ 的库?

    【讨论】:

    【解决方案6】:

    jQuery$ 是相同的 - 参见 jQuery 源代码:

    window.jQuery = window.$ = jQuery;
    

    也许您使用了另一个使用变量 $ 的库,然后您必须解决命名冲突。

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

    或者您可以使用以下 sn-p 之一(在它的主体中不会有 $ 冲突):

    // Method 1
    jQuery(document).ready(function($){
        /* some code that uses jQuery $ */ 
    });
    
    // Method 2
    (function($) {
        /* some code that uses jQuery $ */ 
    })(jQuery);
    

    【讨论】:

    • 我只使用 jQuery 没有任何其他库。试一试,制作一个需要 jQuery 的简单 html 页面,你会发现 $ 和 jQuery 的区别。
    猜你喜欢
    • 2010-12-19
    • 2012-10-22
    • 1970-01-01
    • 2012-07-12
    • 2013-01-27
    • 2017-08-18
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多