У меня простой виджет с одной кнопкой, некоторые свойства и функции. Как я могу получить доступ к этим функциям при нажатии кнопки.
(function ($, undefined) {
$.widget("test", {
_create: function () {
var pButton = this.element;
pButton.button();
pButton.css({ width: this.options.buttonWidth });
pButton.click(function () { this.function_test(); });
},
function_test: function ()
{
alert("aa");
}
});
}(jQuery));
Проблема возникает из-за того, что объект кнопки из функции click() не имеет прямого доступа к создателю виджета. Есть много способов решить эту проблему. Я предлагаю вам связать обратный вызов click с this._on вместо pButton.click, например, заменить:
pButton.click(function () { this.function_test(); });
с:
this._on(pButton, {
click: function () { this.function_test(); }
});
Теперь this
объект внутри обратного вызова click
- это экземпляр виджета, а не кнопка, поэтому вы можете вызывать функции виджета.
Вы можете протестировать его здесь: http://jsbin.com/yorunaji/1/edit?html,js,output