プラグインにjQuery.WidgetFactoryを使用する利点についてたくさん読んでいます。宣伝されている機能の1つは、jQuery.widgetがウィジェットのネームピースを作成する方法です。jQueryコンテキスト内で現在の名前空間を(当然のことながら)維持できるため、これは魅力的です。
問題:
「$( "。myWidget")。namespace.newWayは関数ではありません」というエラーが発生し続けます。
次の要素の場合...
<div class="myWidget"></div>
この例のコードは機能します:
素晴らしいですが...これは私が達成しようとしていることではありません...私はまだ私の名前空間を尊重したいので。
var workingVersion = {
_init: function () { /* Do Something*/ }
};
$.widget("ui.workingVersion", workingVersion);
$(document).ready(function () {
$('.myWidget').workingVersion();
});
しかし、私のコードは失敗します:
var namespace = namespace || { };
;namespace.newWay = (function ($, window, document, undefined) {
return function (options) {
var self = this;
this._create = function () {
// Do something
},
this._init = function() {
// Do something
},
this.publicFunction = function () {
// Do something
};
};
})(jQuery, window, document);
$(document).ready(function () {
$.widget("ui.namespace.newWay", namespace.newWay); //<-- Namespace does get appended
$('.myWidget').namespace.newWay({ type: 'testing' }); //<-- But still fails here
});
私の質問は:
なぜ失敗するのですか?
関連読書: