我该如何解开并重新绑定jqzoom

我尝试过unbind并重新绑定jqzoom,如下所示:

$('.jqzoom').unbind(); $('.jqzoom').jqzoom(options); 

但什么都没发生。 可以请任何帮助我如何做到这一点?

链接: http : //www.mind-projects.it/projects/jqzoom/

试试吧

 $.jqzoom.disable('.jqzoom') 

然后

 $.jqzoom.enable('.jqzoom') 

正如在jquery.jqzoom-core.js文件的解压缩源代码中所建议jquery.jqzoom-core.js ,第686

jQzoom没有办法做到这一点,但这并不重要,因为你可以随时做到这一点。

与任何其他jQuery插件一样,过程是相同的。 所有jquery插件基本上都做同样的事情。 首先,他们将一些数据与元素相关联。 让我们说你有这样的图像。

  

您还可以点击小图像并更改大图像。 例如,您可以从不同角度获得产品的大图像和同一产品的其他一些小图像。 这些是小图像。

  

既然你像这样打电话给jqzoom

 jQuery('.zoom_link').jqzoom({'preloadImages':true, zoomType: 'innerzoom' }); 

然后你需要删除这样的数据:

 jQuery('.zoom_link').removeData('jqzoom') 

但这还不够,因为您仍然将事件侦听器绑定到需要删除的元素,否则您将无法在同一元素上重新启用jqzoom。 这是你如何做到的(没有参数的unbind()删除所有事件监听器。)

 jQuery('.zoom_link').unbind(); /* These are the elements that jqzoom created */ jQuery('.zoomPad').unbind(); jQuery('.zoomPup').unbind(); /* For small images */ jQuery('#small_images').find('img').unbind(); jQuery('#small_images').find('a').unbind(); 

最后我们需要通过在里面添加一些其他元素来恢复jqzoom改变的原始元素内容。

 i = jQuery('.product_thumb_image').clone(); jQuery('.zoom_link').html( i.prop('outerHTML') ); 

上面的代码所做的是克隆内部图像并用我们调用jqzoom之前的图像替换“ zoom_link ”元素的整个内容。 在此之后你可以再次调用jqzoom,它会工作。

 jQuery('.zoom_link').jqzoom({'preloadImages':true, zoomType: 'innerzoom' }); 
 $('.jqzoom').removeData('jqzoom'); 

为我工作。

如果您在使用removeData遇到问题或disable了禁用jqzoom,则可以尝试以下操作:

 $('.jqzoom').data('jqzoom').disable(); 

实际上,在jquery.jqzoom-core.js的686行下,你会发现这两种方法:

  disable: function (el) { var api = $(el).data('jqzoom'); api.disable(); return false; }, enable: function (el) { var api = $(el).data('jqzoom'); api.enable(); return false; }, 

希望它能帮到你!