Не вызывается метод плагина $.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, время: 02:35. |