我创建将使用jQZoom作为特色产品图像放大方法相关的电子商务产品页面。 我想,但是,点击一个替代产品照片缩略图,并将它不仅可以取代大,特色形象,也重新实例新更换的特色图像上的jQZoom()funcion的能力。
所有这一切工作正常
问题是这样的。 这有jQZoom()应用到它的页面加载原来,特色形象仍然是一个“活神器”,而当我将鼠标悬停()被替换的特色形象,缩放效果应用到置换后的图像和原始图像。
////////////////////////
产品页面
///////////////////////
/////////////////////////////////////////////
我的替换功能
function SwapPic(image, image_big)
{
$(".jqZoomWindow").remove();
$(".jqZoomPup").remove();
$('img.feature').attr("src",image);
$('#product-image a').attr("href",image_big).jqzoom({
zoomWidth: 330,
zoomHeight: 330,
showEffect:'show',
hideEffect:'fadeout',
fadeoutSpeed: 'slow',
xOffset :72,
title :false
});
}
下面我们开始主题jQuery的功能似乎... 。 你重复的许多代码,但JS是不是一个完全面向对象的语言,我们可以应用一些技巧来避免重复代码,并利用jQuery插件
我没有时间来测试脚本。 所以,你将有你需要的,如果需要修改的内容。 我希望这是你需要什么更好的近似。
如果你买的衣服为我的妻子,jjejeje会有一些折扣。
(function($) {
$.fn.SwapPic = function(options) {
options = $.extend({
zoomWidth: 330,
zoomHeight: 330,
showEffect:"show",
hideEffect:"fadeout",
fadeoutSpeed: "slow",
xOffset:72,
title:false,
containerImgSmall: "",
containerImgLarge: "",
postAccion: null
}, options || {});
options.pthis = this;
options.accion = function() {
imageSmall = $(options.pthis).attr("href"); //verifies this line
imageLarge = $(options.pthis).attr("href").replace(/small/, "large"); //verifies this line
options.containerImgSmall = $(options.containerImgSmall);
options.containerImgLarge = $(options.containerImgLarge);
//I do not know if it's necessary to do this
if ($(".jqZoomWindow").length != 0)
$(".jqZoomWindow").remove();
//I do not know if it's necessary to do this
if ($(".jqZoomPup").length != 0)
$(".jqZoomPup").remove();
options.containerImgSmall.attr("src", imageSmall);
options.containerImgLarge.attr("href", imageLarge).jqzoom({
zoomWidth:options.zoomWidth,
zoomHeight:options.zoomHeight,
showEffect:options.showEffect,
hideEffect:options.hideEffect,
fadeoutSpeed:options.fadeoutSpeed,
xOffset:options.xOffset,
title:options.title
});
if (options.postAccion!=null)
options.postAccion.call();
};
$(this).bind("click", options.accion);
};
})(jQuery);
$(document).ready(function(){
var myPostAccion = function(){
$('#product-images li:first').fadeIn("slow");
};
$(".a-class-1").SwapPic({
containerImgSmall: "img.feature",
containerImgLarge: "#product-image a",
postAccion: myPostAccion
});
$(".a-class-2").SwapPic({
zoomWidth: 530,
zoomHeight: 530,
containerImgSmall: "img.feature",
containerImgLarge: "#product-image a",
postAccion: myPostAccion
});
});
HTML:
<a class="product-thumbs a-class-1" href="http://cdn.shopify.com/s/files/1/0031/5672/products/n1_small.jpg?1252565016" ><img src="http://cdn.shopify.com/s/files/1/0031/5672/products/n1_thumb.jpg?1252565016" alt="text" /></a>
<a class="product-thumbs a-class-2" href="http://cdn.shopify.com/s/files/1/0031/5672/products/n2_small.jpg?1252565016" ><img src="http://cdn.shopify.com/s/files/1/0031/5672/products/n2_thumb.jpg?1252565016" alt="text" /></a>
这是你如何清理从jqzoom数据:
$('.jqclass').removeData('jqzoom');
由于jqzoom保持在这个对象中的数据:
$(el).data("jqzoom", obj);