Я только начинаю использовать шаблоны модулей (благодаря оригинальному руководству Кристиана Хайльмана), чтобы упорядочить мой jQuery, и у меня возникает странная проблема.Рассмотрим следующий код JavaScript:
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
}
}();
, который включен и используется в следующем HTML:
<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 распределяется между экземплярами, но я подумал, что она осталась незаметной для частного экземпляра функции.
Любые советы о том, как получить эту область должным образом и работать, будут с благодарностью.