调用jQZoom在更换图片(Calling jQZoom on Replaceable Image)

2019-08-04 13:41发布

我创建将使用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
    });
}

Answer 1:

下面我们开始主题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>


Answer 2:

这是你如何清理从jqzoom数据:

$('.jqclass').removeData('jqzoom');

由于jqzoom保持在这个对象中的数据:

$(el).data("jqzoom", obj);


文章来源: Calling jQZoom on Replaceable Image