Не вызывается метод плагина $.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 полная версия |
1) я чото непонял
А где вы виджет создаёте ????? Я вижу что вы сразу пытаетесь к методу в виджите обратится, предварительно не создавая виджет 2) Это работает ? createMessage: function(){ alert("hello world"); } |
Цитата:
Просто перечитав доки на wiki.jqueryui.com я так понял что виджет так и создается. |
Я перефразирую.
Сначало надо применить виджет к выборке А только потом обращаться к методам виджета <!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> |
Все теперь понял.
|
Часовой пояс GMT +3, время: 17:53. |