Доброго времени суток. Есть 2 скрипта.
(function($){
/**
* Базовый класс для работы с Аякс запросами
* В него включено также отображение загрузчика, сообщения об ошибка и "успехе"
* @param object params {
* ajax_path: '/admin/ajax/' - путь к аякс обработчику. Должен заканчиваться обязательно слешем,
* ...
* }
*/
$.fn.BaseAjax = function(params){
var me = this,
default_params = {
ajax_path : ''
};
me.params = $.extend(default_params, params);
/**
* Функция посылки запроса
* @param string method имя метода в обработчике. Пример: method: 'get_something' (запрос пошлется на '/admin/ajax/get_something')
* @param object params объект с отсылаемыми параметрами
* @param function success_function функция обработчик success
*/
me.send_query = function(method, params, success_function){
$.ajax({
url: me.params.ajax_path+method,
type: 'POST',
dataType: 'json',
data: params,
success: success_function
});
};
me.base_init = function(){
me.put_loader();
me.put_message_block();
};
/**
* Функция добавляющая на страницу лоадер, если его нету.
*/
me.put_loader = function(){
if ($('.loader').length==0){
var loader = '<div class="loader">'+
'<div class="loader_image">'+
'</div>'+
'</div>';
$('body').append(loader);
}
me.params.loader = $('.loader');
};
me.show_loader = function(){
me.set_loader_height();
$(me.params.loader).show();
};
me.hide_loader = function(){
$(me.params.loader).hide();
};
me.set_loader_height = function(){
var height = document.height;
$(me.params.loader).css('height', height+'px');
var width = 128,
left = (document.width - width) / 2;
$('.loader_image', me.params.loader).css('left', left+'px');
};
/**
* Функция добавляющая на страницу блок сообщения если его нету
*/
me.put_message_block = function(){
if ($('.ajax_message_block').length==0){
var message_block = '<div class="ajax_message_block">'+
'</div>';
$('body').append(message_block);
}
me.params.message_block = $('.ajax_message_block');
};
me.show_error = function(message){
$(me.params.message_block).removeClass('ajax_success_message').addClass('ajax_error_message');
me.show_block(message);
};
me.show_success = function(message){
$(me.params.message_block).removeClass('ajax_error_message').addClass('ajax_success_message');
me.show_block(message);
};
me.show_block = function(message){
$(me.params.message_block).html(message);
var left_value = (document.width-$(me.params.message_block).width())/2;
$(me.params.message_block).css({
'left': left_value
});
$(me.params.message_block).fadeIn(400, function(){
setTimeout(function(){
$(me.params.message_block).fadeOut(400);
}, 2000);
});
};
me.base_init();
return this;
};
})(jQuery);
И второй который наследуется от вышеуказанного
(function($){
$.fn.ReviewsList = function(params){
var me = this,
default_params = {
page: 1,
ajax_path: '/reviews/ajax/'
};
this.__proto__ = new $.fn.BaseAjax;
me.params = $.extend(me.params, default_params);
me.params = $.extend(me.params, params);
me.init = function(){
me.params.object_id = $(me).data('object-id');
me.get_list();
};
me.bind_navigation = function(){
if ($('.pagination a', me).length>0){
$('.pagination a', me).unbind('click');
$('.pagination a', me).click(function(e){
e.preventDefault();
me.params.page = $(this).html();
me.get_list();
});
}
if ($('.review_drop_down', me).length > 0){
$('.review_drop_down', me).unbind('click');
$('.review_drop_down', me).click(function(e){
e.preventDefault();
$(this).parent().hide();
$(this).parents('.review_container').find('.hidden_review_description').show();
$(this).parents('.review_container').find('table.small_raiting_review').show();
});
}
};
me.get_list = function(){
me.show_loader();
me.send_query('get_list', {
page: me.params.page,
object_id: me.params.object_id
}, function(result){
me.hide_loader();
if (result==null){
me.show_error('При послыке запроса произошла ошибка. Попробуйте обновить страницу');
return;
}
if (result.status==true){
me.set_content(result.data);
me.bind_navigation();
}
else{
me.show_error(result.message);
}
})
};
me.set_content = function(content){
$(me).html(content);
};
me.init();
};
})(jQuery);
В IE 8 при загрузке страницы возникает ошибка при вызове me.show_loader(); в функции me.get_list, и остальных унаследованных функций тоже. Такое впечатление, что просто не наследуется вообще. Подскажите пожалуйста в чем проблема ну и какое решение есть этой проблемы? Заранее спасибо.
p.s. код не идеальный, я понимаю