Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.12.2011, 19:11
Кандидат Javascript-наук
Отправить личное сообщение для ArmagedDance Посмотреть профиль Найти все сообщения от ArmagedDance
 
Регистрация: 07.12.2009
Сообщений: 147

Проблема с самописанным плагином.
Написал плагинчик jquery:

$.fn.informer = function(options){
	  // настройки по умолчанию
	  var options = $.extend({
	    alertMessage: 'Внимание!',
        timeOut: 3000
	  },options);
	  return this.each(function() {
$('<div>', {id: 'informDIV',
            css: {
              zIndex: 10000,
                color: 'black',
                backgroundColor: '#ccc'
            },
            html: alertMessage
        }).appendTo('body');
        var hideInformer=setTimeout(function(){
   $('#informDIV').hide();
	  }, timeOut);
      });
	};

Вызываю из скрипта:
$.informer({alertMessage: 'Внимание!', timeOut: 3000});

Предварительно подключил перед выводом файл jquery.informer.js

В ответ получаю: Ошибка: $.informer is not a function
Что может быть не так?
Ответить с цитированием
  #2 (permalink)  
Старый 08.12.2011, 19:15
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

$.fn.informer = function(options){
то
$.informer = function(options){
Ответить с цитированием
  #3 (permalink)  
Старый 08.12.2011, 19:17
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

либо ваш плагин нужно вызывать так:
$(".elem").informer({alertMessage: 'Внимание!', timeOut: 3000});
Ответить с цитированием
  #4 (permalink)  
Старый 08.12.2011, 19:35
Кандидат Javascript-наук
Отправить личное сообщение для ArmagedDance Посмотреть профиль Найти все сообщения от ArmagedDance
 
Регистрация: 07.12.2009
Сообщений: 147

Мде, предупреждения об ошибках пропали, а результата нет (ожидал увидеть появление дива с текстом внимание и исчезновение его через 3 секунды). Собственно, в firebug новоиспеченный див тоже отсутствует...
Ответить с цитированием
  #5 (permalink)  
Старый 08.12.2011, 20:25
Кандидат Javascript-наук
Отправить личное сообщение для ArmagedDance Посмотреть профиль Найти все сообщения от ArmagedDance
 
Регистрация: 07.12.2009
Сообщений: 147

$.fn.informer = function(option){
	var settings=$.extend({
    alertMessage: 'Внимание!',
    timeOut: 3000
  }, option);
	  return this.each(function(){alert(alertMessage);});
	};

Даже простейший вот такой плагин не работает. Что ж так сложно то все...
Ответить с цитированием
  #6 (permalink)  
Старый 08.12.2011, 20:35
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

<div class="test_div"></div>
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$.fn.informer = function(option){ 
    var settings = $.extend({ 
            alertMessage: 'Внимание!', 
            timeOut: 3000 
        }, option);

    return this.each(function(){
        alert(settings.alertMessage);
    });
};

$(".test_div").informer();

$(".blabla").informer(); // не сработает, потому что не найдет ни одного элемента с которым плаг может работать

</script>
Ответить с цитированием
  #7 (permalink)  
Старый 08.12.2011, 20:38
Кандидат Javascript-наук
Отправить личное сообщение для ArmagedDance Посмотреть профиль Найти все сообщения от ArmagedDance
 
Регистрация: 07.12.2009
Сообщений: 147

Благодарю!)
Ответить с цитированием
  #8 (permalink)  
Старый 08.12.2011, 20:47
Кандидат Javascript-наук
Отправить личное сообщение для ArmagedDance Посмотреть профиль Найти все сообщения от ArmagedDance
 
Регистрация: 07.12.2009
Сообщений: 147

$.fn.informer = function(option){
	var settings=$.extend({
    alertMessage: 'Внимание!',
    timeOut: 3000
  }, option);
	  return this.each(function(){
	    $(this).html(settings.alertMessage);
        setTimeout(function(){
          $(this).hide();
        }, settings.timeOut);
	});
    }

Блок с текстом появляется. А почему не получается его спрятать посредством setTimeout? Выдается ошибка a.ownerDocument is undefined
Ответить с цитированием
  #9 (permalink)  
Старый 08.12.2011, 21:14
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

$.fn.informer = function(option){ 
    var settings=$.extend({ 
    alertMessage: 'Внимание!', 
    timeOut: 3000 
  }, option); 
      return this.each(function(){ 
        var self = this;
        $(this).html(settings.alertMessage); 
        setTimeout(function(){ 
          $(self).hide(); 
        }, settings.timeOut); 
    }); 
    }
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с плагином jCaroseul sleepo jQuery 1 29.03.2011 20:40
проблема с плагином jqplot - неверно рисуется круговая диаграмма luethus jQuery 1 18.11.2010 01:23
Проблема с плагином jqtransform Mexxman jQuery 0 11.11.2010 23:27
Проблема с jWysiwyg плагином IgorN Библиотеки/Тулкиты/Фреймворки 3 08.09.2010 10:08
Проблема при работе с плагином jQuery Map Hilight REp0rtER jQuery 3 29.07.2009 22:10