我正在尝试开发一个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函数中,容器没有任何子项!!!那是为什么?
任何帮助都将受到高度赞赏,
答案 0 :(得分:0)
container
已经是一个已定义的jQuery对象,但您正在重新定义为'xxxx'。我猜你要插入这个值?尝试使用container.html('xxxx')
?
此外,您的mouseover
函数似乎正在返回一个函数,其中索引将是未定义的(我还没有测试过),但请尝试这样做:
.mouseover(function () {
container.html('xxxx');
activateItem(i);
});
更新:好的,现在我有时间查看代码,len
函数中没有定义suggest
。我做了一个基本的demo来测试它,它似乎按预期工作。