Новичок
Покинул форум
Сообщений всего: 39
Дата рег-ции: Февр. 2012
Откуда: Донецк, Украина
Помог: 0 раз(а)
|
Доброго времени суток. Есть 2 скрипта.
CODE ( javascript):
скопировать код в буфер обмена
(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);
И второй который наследуется от вышеуказанного
CODE ( javascript):
скопировать код в буфер обмена
(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. код не идеальный, я понимаю
|