Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.10.2011, 13:04
Аспирант
Отправить личное сообщение для Viper Посмотреть профиль Найти все сообщения от Viper
 
Регистрация: 27.09.2008
Сообщений: 88

Не вызывается метод плагина $.widget
Решил начать изучать Widget factory, и столкнулся с такой проблемой.

Есть код в отдельном подключаемом файле
;(function($, window, document, undefined){
	$.widget('aurora.message', {
		options: {
			msg_type_global: 'highlight',
			msg_type_custom: false,
			msg_type_custom_container: 'highlight',
			msg_type_custom_icon: 'info',
			overrideFont: false,
			divPadding: '0 0.5em',
			divMargin: '5px !important',
			spanMargin: '0 0.3em 0 0'
		},
		createMessage: function(){
			$('<div>Test</div>').insertAfter(this.element);
		},
		_setOption: function( key, value ){
			switch (key) {
				default: this.options[key] = value;
				break;
			}

			this._update();
		},
		_update: function(){
		},
		destroy: function(){
			$.Widget.prototype.destroy.call(this);
		}
	});
})(jQuery, window, document);

В основной странице вызываю

$('#create').click(function(){
	$(this).message('createMessage');
});

Но что метод createMessage просто не вызывается. Если код из этого метода засунуть с _create то все срабатывает, но мне не нужно выполнять какие-то действия при инициализации.
В чем проблема?

PS! jquery 1.6.4/UI 1.8.16 полная версия
Ответить с цитированием
  #2 (permalink)  
Старый 20.10.2011, 13:07
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

1) я чото непонял
А где вы виджет создаёте ?????
Я вижу что вы сразу пытаетесь к методу в виджите обратится, предварительно не создавая виджет

2) Это работает ?
createMessage: function(){
      alert("hello world"); 
}
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 20.10.2011 в 13:13.
Ответить с цитированием
  #3 (permalink)  
Старый 20.10.2011, 14:01
Аспирант
Отправить личное сообщение для Viper Посмотреть профиль Найти все сообщения от Viper
 
Регистрация: 27.09.2008
Сообщений: 88

Сообщение от DjDiablo
Это работает ?
нет.
Просто перечитав доки на wiki.jqueryui.com я так понял что виджет так и создается.
Ответить с цитированием
  #4 (permalink)  
Старый 20.10.2011, 14:53
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Я перефразирую.
Сначало надо применить виджет к выборке
А только потом обращаться к методам виджета

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
         <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css"> 
         <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> 
         <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script> 
	</head>
<body>
<div id="test"> </div>



  <script type="text/javascript">
(function($) {

    $.widget("ui.myWidget", {
		options: {
		},

         //инициализация виджета				
        _create: function() {
                        alert("привет я метод инициализации виджета.");
		},

                // твой собственный метод
        hello:function() {
                        alert("Всем привет я пользлвательский метод");
		},

		// деинициализация виджета
		destroy: function() {			
                     
		},
			
	});
})(jQuery);

//  	$("#test").myWidget('hello'); // эта строка работать небудет. 
//      Мы неможем вызвать метод того чего не существует.


//      дальше пишем правильно

        //применяем виджет
	$("#test").myWidget();

        //обращаемся к методу виджета
        $("#test").myWidget('hello');
</script>

	</body>
</html>
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 20.10.2011 в 15:12.
Ответить с цитированием
  #5 (permalink)  
Старый 20.10.2011, 15:12
Аспирант
Отправить личное сообщение для Viper Посмотреть профиль Найти все сообщения от Viper
 
Регистрация: 27.09.2008
Сообщений: 88

Все теперь понял.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработчик click вызывается несколько раз или не всегда вызывается OlegJquery jQuery 2 21.07.2011 20:37
Как сделать метод плагина, доступный извне? Лимонадный Джо jQuery 4 14.01.2011 18:07
Как узнать у какого объекта вызван метод. Scalar Events/DOM/Window 4 26.03.2010 11:10
Назначить на обработчик события метод обьекта Logo Общие вопросы Javascript 11 20.06.2009 23:40
Добавить свой метод к элементу alekciy Events/DOM/Window 6 16.02.2009 19:29