سؤال

I have simple widget with one button and some properties and functions. How can I access those functions on button click.

(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));
هل كانت مفيدة؟

المحلول

The problem comes from the fact that the button object from the click() function doesn't have direct access to the widget creator. There are many ways to address that. I suggest you bind the click callback with this._on instead of pButton.click, e.g. replace:

pButton.click(function () { this.function_test(); });

with:

this._on(pButton, {
    click: function () { this.function_test(); }
});

Now the this object inside the click callback is the widget instance, not the button, thus you can call functions of the widget.

You can test it here: http://jsbin.com/yorunaji/1/edit?html,js,output

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top