2013-11-08 2 views
0

Я пытаюсь создать экземпляр объекта jquery, и у меня есть ошибка в IE8. Вот что мой JQuery плагин выглядит

(function($){ 
    // var ServicesRoles = function(element, options) 
    $.fn.Service = function() { 

     var obj = this; 

     this.list = function(url, params, ajaxParams) {...} 

     ... 
     } 
})(jQuery); 

И это, как я создаю экземпляр мой объект

var service = new $.fn.Service(); 

Он отлично работает в FF и Chrome. Я не пробовал другие версии IE, но еще в IE8, я получаю эту ошибку:

объекта ожидается

На линии, где я создаю экземпляр моего объекта.

Моя версия JQuery является 1.8.3

Я делаю что-то не так?

EDIT: Цель этого класса - сделать вызов ajax. Он имеет функцию списка, get и т. Д., Которая выполняет вызов ajax с определенными параметрами.

ПОСТАНОВИЛИ: Проблема заключалась в том, что мой класс был метод под названием «удалить», и кажется, что IE8 не нравится:/

+0

$ не может еще есть, попробуйте console.log и посмотрите, существует ли он в IE – Romaindr

+0

, если это независимая служба, вы можете сделать ее как '$ .service = function() {}' и назвать ее как '$ .service'? – rab

+1

Это работает в IE 11, но я не могу на всю жизнь разобраться, почему вы хотите поместить функцию в '$ .fn', а затем называть ее' new' – lonesomeday

ответ

2

Ваш синтаксис function($) неверен. Предполагая, что это должен быть документ, готовый обработчик, используйте:

$(function() { 
    $.fn.Service = function() { 
     // your code... 
    }  
}); 

Если предполагается, что замыкание, используйте:

(function ($) { 
    $.fn.Service = function() { 
     // your code... 
    }  
})(jQuery); 
+0

Извините, я обновил сообщение. Это было то, что у меня было в моем коде уже – Olivier

+0

Если вы уже включаете в себя закрытие, тогда у вас не должно быть проблем. Проблема в IE8 должна лежать внутри кода, который вы не включили в вопросе. –

+0

Я изменил свой код, чтобы иметь очень простой объект (см. Вопрос), и он все еще не работает:/ – Olivier

0

обычно метод, использующий метод расширения является $(someDom).service. от вы хотите, чтобы вызвать эту услугу, вы можете попробовать $(this).service();

+1

Я не хочу, чтобы он был привязан ко всему в dom. Я просто пытаюсь создать новый объект. И это отлично работает в FF и Chrome – Olivier

0

Проблема заключалась в том, что IE8 не позволяет атрибуты, чтобы иметь некоторые зарезервированные слова, как имя функции «удалить» в моем случае ...

Смежные вопросы