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(). 길이는 0입니다. 무엇을 잘못 했습니까? – Jack
코드는 입력 한 내용이 올바르지 않습니다. 그런 식으로 i에 액세스 할 수 없습니다. 나는 activateItem 함수에 i 값을 전달하기 위해 클로저가 필요합니다. – Jack
그러면 컨테이너를 'xxxx'로 설정하는 목적은 무엇입니까? – Mottie