我该如何解开并重新绑定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; },
希望它能帮到你!