$ Vs JQuery之间的基本区别是什么

时间:2011-12-20 06:44:19

标签: jquery

我有一个js文件,它有几个fn()并且它工作正常但是当它被运行一个js插件文件时,我在firebug中得到错误。

$(document).ready(function() {
     var innerHTML = $("#id_1").html();
     $("#Id_2").html(innerHTML)    
   });

以上fn()正在运行,但现在我在firebug $("#id_1") is null中遇到错误。

如果我使用jQuery代替$,那么它的工作正常。请参阅下面的更正功能。

$(document).ready(function() {
     var innerHTML = jQuery("#id_1").html();
     jQuery("#Id_2").html(innerHTML)    
   });

现在我的问题是,我有几个js文件,我使用了$,现在我可能需要将$更改为jQuery。请给我任何想法以避免这种情况。

6 个答案:

答案 0 :(得分:2)

$只是'jQuery'的别名。 请确保您添加的库与“$”没有任何冲突。当您尝试添加另一个带有'$'的框架作为原型的别名时,通常会发生这种情况。

使用jQuery no Conflict http://api.jquery.com/jQuery.noConflict

答案 1 :(得分:2)

很明显,问题是由另一个定义$函数的JavaScript库引起的。你可以通过以下方式解决这个问题:

var $copy = $;  // Copy the original value of $ to a temporary variable
$ = jQuery;

// Do everything that needs to be done with the jQuery library */

$ = $copy;  // Copy the old value of $

或者:

( function($) {
    // $ has been redefined for the scope of the current function
    // Do everything that needs to be done with the jQuery library */
} )(jQuery);

答案 2 :(得分:2)

您正在使用的额外库(wysiwyg.js)也声明了一个函数$()

/**
 * Get an element by it's identifier
 *
 * @param id Element identifier
 */
function $(id) {
    return document.getElementById(id);
}

您应该使用jQuery.noConflict()

答案 3 :(得分:1)

您似乎缺少#

$(document).ready(function() {
     var innerHTML = $("#id_1").html();
     $("#Id_2").html(innerHTML);   // ; is optional here but good to have it    
   });

假设您的元素包含id个值id_1Id_2 只需检查Id_2的案例 Working fiddle

答案 4 :(得分:1)

实际上,jQuery$是一回事。如果你研究jQuery源代码,你会发现类似的东西:

window.jQuery = window.$ = function(){ ... }

在你的情况下它接缝,window.$变量被其他一些替换。您的某些文件$.noConflict()$变量可能会被替换。

答案 5 :(得分:0)

  1. 您在第二个ID中缺少'#'
  2. 您在 id_2
  3. 末尾缺少';'
  4. 你在'Id_2'中给出了大写'I'。确保它是正确的。
  5. 你可以直接这样做

    $("#id_2").html($("#id_1").html());
    

    检查小提琴:http://jsfiddle.net/nUZer/2/