2010-04-27 3 views
2

Задача 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 оао НИИИТ ошибка во время выполнения: «нулевой» равно нулю или не является объектом

область Ошибка:

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

Я также использую protoype.js на стр.

+0

'apply' уже определен для всех объектов, вы, вероятно, не должны (не можете?) Изменить его. [Read more.] (Https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Function/apply). – meagar

+0

@meagar: 'apply' определяется для объектов * function *, а не для всех объектов. jQuery 'fn' не является функцией, это простой объект. –

+0

@ T.J. Хороший момент, спасибо – meagar

ответ

1

Если вы используете jQuery и Prototype на странице, вероятно, в глобальной области видимости не будет определено значение неопределенности. Единственный способ использовать jQuery и Prototype на той же странице - использовать jQuery.noConflict и дать ему другой символ, чем $, который также использует Prototype.

+0

@TJ - первая ошибка исчезла после реализации вашего второго предложения по этой ссылке http://stackoverflow.com/questions/2721815/how-to-be-a-jquery-no-conflict-expert/2721977#2721977 теперь вторая ошибка все еще идет. –

0

Почему вы подаете заявление в декларации? apply используется для указания этого методом. как правило, вы могли бы сделать что-то вроде этого ...

var object1 = {X:"stuff"}; 

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

$.fn.apply(object1); 
+0

мой добавленный код не весь код, это часть кода, где отладчик javascript выделяет –

+0

@Tim: Это простая ошибка, но я не думаю, что его 'apply' имеет какое-либо отношение к обычной функции Function # apply', это просто удобный термин для того, что он хочет сделать. jQuery '$ .fn' не является (смущающей!) функцией, это просто ссылка на объект' jQuery.prototype'. –

2

Похоже, ваша проблема в том, что оба прототипа и JQuery использовать/имя переменной $ функции. Отметьте this page о том, как установить jQuery, чтобы он не противоречил прототипу.

0

Для задачи 1 можно было решить конфликты с prototype.js только с помощью

jQuery.fn.apply = … 

Тогда вы избежать конфликта между двумя библиотеками.