0
私はjQueryプラグインを開発しようとしています。これまでに書いたコードスニペットは次のとおりです。jQueryプラグインの開発とコンテキスト
var MYNAMESPACE = MYNAMESPACE || {};
MYNAMESPACE.MyPlugin = function (inputElement, options) {
var element = $(inputElement),
oldValue = element.val(),
container = null,
init = function() {
container = $('<div class="container"></div>').hide().insertAfter(element);
//the suggest method is called from within the anonymous function
//called by getJSON...
},
suggest = function (resp) {
for (var i = 0; i < len; i++) {
var item = $('<div/>')
.html('whatever')
.mouseover(function (index) {
return function() {
activateItem(index);
};
} (i));
container.append(item);
}
},
activateItem = function (index) {
//container doesn't include those appended items.
//why???
};
init();
};
(function ($) {
$.fn.myplugin = function (options) {
return new MYNAMESPACE.MyPlugin(this.get(0), options);
};
} (jQuery));
activateItem関数内では、コンテナに子がありません!!!何故ですか?すべてのヘルプは高く評価されるだろう
、
正に、私はこの方法でコンテナの値を変更するつもりはありません。コードに注意を払うと、container.append(item)を使用して新しく作成されたアイテムがコンテナに追加されます。それは正常に動作しますが、activateItem関数内から最新の変更されたconatinerにアクセスする必要があります。ただし、コンテナには子がありません(ただし、これらの要素は画面に表示されますが、activeItem関数のcontainer.children()。lengthは0です)何が間違っていますか? – Jack
私は実際には、値をactivateItem関数に渡すためにクロージャーが必要です。 – Jack
次に、 'xxxx'にコンテナを設定する目的は何ですか? – Mottie