Zur kommenden Version wird die jQueryUI-Widget-Factory ordentlich aufgepimpt. $.widget (als Basisklasse aller ui-Widgets) wird einige neue interne Helfermethoden mitbringen, die ich euch hier kurz vorstellen möchte.

_bind

_bind: function( [element, ] handlers ) {

Handlers ist ein ObjectSet aus Events und Eventhandlern. Sprich, als Schlüssel gibt man hier die Events mit, als Value den entsprechenden Handler.\r\nExistiert die Handler-Funktion in der Instanz des Widgets, wird diese beim Event aufgerufen.\r\nWenn nicht, so muss die Funktion mit dem entsprechenden Namen im Scope des Widgets verfügbar sein.\r\nWird kein Element übergeben, werden alle Events automatisch an das Element des Widgets gebunden.\r\nDer Scope der aufgerufenen Funktion ist hier nicht der Scope des geklickten DOM-Elements, sondern der des Widgets. Ein einfaches Beispiel:

(function ( $ ) {
    var foo = function ( event ) {
    // called on mouseenter;
    };
    $.widget( 'mein.widget', {
        _create : function () {
            var handlers = {
                click : '_click',
                mouseenter : 'foo'
            };
            this._bind( handlers );
        },
        _click : function ( event ) {
            //called on click
        }
    });
})( jQuery );

_super / _superApply

Mit 1.9 wird man wesentlich bequemer vererben können. Folgendes Beispiel wäre Vererbung a la alter API:

$.widget( 'mein.dialog', 'ui.dialog', {
    _create : function () {
        $.ui.dialog.prototype._create.apply( this, arguments );
    }
});

Mit _superApply( parentmethod, args ) schreibt sichs deutlich schneller:</p>

$.widget( 'mein.dialog', 'ui.dialog', {
    _create : function () {
        this._superApply( '_create', arguments );
    }
});

_hoverable / _focusable

_hoverable/ _focusable: function( element ) {

Beide Helfermethoden kümmern sich um das Dekorieren des übergebenen Elements mit der entsprechenden UI-CSS-Klasse (ui-state-focus / ui-state-hover). Hinzugefügte Elemente werden in den Instanzvariablen focusable/hoverable gecached, so dass man später leicht darauf zugreifen kann.