【问题标题】:'$.fn' is null or not an object'$.fn' 为 null 或不是对象
【发布时间】:2010-04-27 13:02:28
【问题描述】:

问题 1

错误:Microsoft JScript 运行时错误:“$.fn”为空或不是对象

错误区域:

    $.fn.apply=function(item,content,header){

        $(".featureBox"+item).css('z-index', "1000");
        $("img.featureBox" + item +"top").attr("src",basepath + "box-big-top.jpg");
        $("img.featureBox" + item +"imgcut").attr("src",basepath + "box-big-img"+item+".jpg");
        featureboxcont[item].attr("src",basepath + "box-big-cont.jpg");
        $("img.featureBox" + item +"foot").attr("src",basepath + "box-big-bot2.jpg");
        //$("#NoteModalDialog > #x-dlg-bd > #x-dlg-tab > #acc-ct")

        $("#box"+item+"headtext > .h2div > h2").text(header);
        $("#box"+item+"bottext").css({"top":"181px","width":"205px","font-size":"12px","color":"#ffffff","left":"10"});
        $("#box"+item+"foottext").css({"top":footheight+"px","width":"215px","left":"20"});
        $("#box"+item+"hidden").css({"display":"block"});
        $("#box"+item+"bottext").text(content);
        $("#box"+item+"headtext > .h2div > h2").removeClass("sIFR-replaced");
        callsIFR();
    }

问题 2

错误:Microsoft JScript 运行时错误:'null' 为 null 或不是对象

错误区域:

$("#innerWrapper").addClass("js-version");

我也在页面上使用 protoype.js。

【问题讨论】:

  • apply 已为所有对象定义,您可能不应该(不能?)更改它。 Read more..
  • @meagar: apply 是为 function 对象定义的,而不是所有对象。 jQuery 的 fn 不是一个函数,它是一个普通的对象。

标签: javascript jquery prototypejs conflict


【解决方案1】:

听起来您的问题是原型和 jQuery 都使用 $ 函数/变量名称。查看this page 了解如何将 jQuery 设置为不与原型冲突。

【讨论】:

    【解决方案2】:

    如果您在页面上使用 jQuery 和 Prototype,$.fn 确实可能在全局范围内未定义。在同一页面上使用 jQuery 和 Prototype 的唯一方法是使用 jQuery.noConflict 并给它一个与 Prototype 也使用的 $ 不同的符号。

    【讨论】:

    【解决方案3】:

    为什么在声明中有申请? apply 用于通过方法指定它。通常你会做这样的事情......

    var object1 = {X:"stuff"};
    
    var $.fn = function () {
       /* substitute your method here */
       this.X = this.X || "default";
       alert(this.X);
    };
    
    $.fn.apply(object1);
    

    【讨论】:

    • 我添加的代码不是整个代码,它是 javascript 调试器突出显示的代码的一部分
    • @Tim:这是一个简单的错误,但我认为他的apply 与通常的Function#apply 没有任何关系,这只是他想做的一个方便的术语。 jQuery 的 $.fn 不是(令人困惑!)一个函数,它只是对 jQuery.prototype 对象的引用。
    【解决方案4】:

    对于问题1,您可以通过使用来解决与prototype.js的冲突

    jQuery.fn.apply = …
    

    那么你就避免了两个库之间的冲突。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多