저는 jQuery를 구성하기 위해 모듈 패턴 (Christian Heilmann의 원래 튜토리얼 덕분에)을 사용하기 시작했습니다. 이상한 문제가 발생했습니다. 다음과 같은 자바 스크립트 코드를 고려문제가 jQuery/모듈 패턴으로 유지 관리됩니다.
포함 추적의 HTML에 사용되는var Gallery = function(){
var $obj, $thumbs, $mainPic;
function init($e){
$obj = $e;
$thumbs = $obj.find('.thumbnail');
$mainPic = $obj.find('.main-pic');
$obj.find($thumbs).bind('click',updateMainPic);
};
function updateMainPic() {
$thumbs.removeClass('selected');
$thumb = $thumbs.filter(this);
$thumb.addClass('selected');
newPicUrl = $thumb.data('src');
$mainPic.attr('src',newPicUrl);
};
return {
init:init
}
}();
:
<div id="gallery1">
<img src="" class="main-pic">
<ul>
<li class="thumbnail" data-src="photo1.jpg">Photo 1</li>
<li class="thumbnail" data-src="photo2.jpg">Photo 2</li>
<li class="thumbnail" data-src="photo3.jpg">Photo 3</li>
<li class="thumbnail" data-src="photo4.jpg">Photo 4</li>
</ul>
</div>
<script type="text/javascript">
Gallery.init($('#gallery1'));
</script>
<div id="gallery2">
<img src="" class="main-pic">
<ul>
<li class="thumbnail" data-src="photo1.jpg">Photo 1</li>
<li class="thumbnail" data-src="photo2.jpg">Photo 2</li>
<li class="thumbnail" data-src="photo3.jpg">Photo 3</li>
<li class="thumbnail" data-src="photo4.jpg">Photo 4</li>
</ul>
</div>
<script type="text/javascript">
Gallery.init($('#gallery2'));
</script>
내가 실행 해요 문제는 #의 gallery1의 썸네일을 클릭하면 이미지를 교체된다는 점이다 # gallery2, 아직 # gallery2가 예상대로 작동합니다. $ obj 변수가 인스턴스에서 공유되고있는 것 같지만 함수의 개인 인스턴스에 범위가 남아 있다고 생각했습니다.
적절하게 범위를 지정하고 작동시키는 방법에 대한 조언은 크게 감사하겠습니다.
jQuery 플러그인으로 변환하면 모두 해결되었습니다 - 감사합니다! – bjork24
@ Bjork24 아무 문제 없어 - 관련 메모에서 자바 스크립트 디자인 패턴 (http://www.addyosmani.com/resources/essentialjsdesignpatterns/book/)에서 무료 전자 책을 확인하십시오. 너의 공부에 행운을 빌어. –