Javascript ';$。fn';是否为null或不是对象

Javascript ';$。fn';是否为null或不是对象,javascript,jquery,prototypejs,conflict,Javascript,Jquery,Prototypejs,Conflict,问题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.

问题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");

我还在第页使用Prototype.js。

您为什么要在声明中应用?“应用”用于使用方法指定此项。通常你会这样做

var object1 = {X:"stuff"};

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

$.fn.apply(object1);

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

如果您在页面上使用jQuery和prototype,
$。fn
确实可能在全局范围内未定义。在同一页面上使用jQuery和Prototype的唯一方法是使用不同于Prototype也使用的
$
,并为其指定不同的符号。

对于问题1,您可以通过使用

jQuery.fn.apply = …

然后避免两个库之间的冲突。

apply
已为所有对象定义,您可能不应该(不能?)更改它@meagar:
apply
是为函数对象而不是所有对象定义的。jQuery的
fn
不是一个函数,它是一个普通的对象。@T.J.说得好,谢谢。我添加的代码不是完整的代码,它是javascript调试器所在代码的一部分highlighting@Tim:这很容易出错,但我认为他的
apply
与通常的
函数#apply
没有任何关系,这只是他想做什么的一个方便的术语。jQuery的
$.fn
不是(令人困惑的!)一个函数,它只是对
jQuery.prototype
对象的引用。@TJ-第一个错误在实现了您对该链接的第二个建议后消失了,第二个错误还在出现。