Когда вы расширяете $.ui.testSub
, он не существует в этой точке. Все, что вам нужно сделать, это поменять местами два блока кода:
//Should be first
$.widget("ui.testSub", $.ui.mouse,
{
_init: function ()
{
this.element.addClass("some-class");
},
...
});
$.widget("ui.testSuper", $.extend({}, $.ui.testSub.prototype,
{
_init: function ()
{
$.ui.testSub.prototype._init();
},
...
}));
$('#some-element').testSub({ }); // this works fine
$('#some-element').testSuper({ }); // then it will work fine as well
Смотрите живой пример здесь
UPDATE
Я понял, что вы говорите. Вам нужно вызвать базовый метод, подобный этому
$.ui.testSub.prototype._init.call(this);
Таким образом, вы не потеряете контекст вашего элемента. Пример здесь