我尝试过unbind并重新绑定jqzoom,如下所示:
$('.jqzoom').unbind();
$('.jqzoom').jqzoom(options);
但什么都没发生。可以请任何帮助我如何做到这一点?
答案 0 :(得分:3)
尝试
$.jqzoom.disable('.jqzoom')
然后
$.jqzoom.enable('.jqzoom')
在jquery.jqzoom-core.js
文件的解压缩源代码内建议,行686
答案 1 :(得分:2)
jQzoom无法做到这一点,但这并不重要,因为你可以随时自己做。
与任何其他jQuery插件一样,过程是相同的。 所有jquery插件基本上都做同样的事情。首先,他们将一些数据与元素相关联。让我们说你有一个图像 像这样。
<a class="zoom_link"><img id="product_thumb_image" src="...link to image..." /></a>
您还可以点击小图像并更改大图像。例如,您可以从不同角度获得产品的大图像和同一产品的其他一些小图像。 这些是小图片。
<div id="small_images">
<a href="javascript:void(0)" rel="{gallery:'gal402', smallimage:'i1.jpg', largeimage:'l1.jpg'}">
<img src="i1.jpg" />
</a>
<a href="javascript:void(0)" rel="{gallery:'gal402', smallimage:'i2.jpg', largeimage:'l2.jpg'}">
<img src="i2.jpg" />
</a>
</div>
因为你像这样打电话给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' });
答案 2 :(得分:1)
$('.jqzoom').removeData('jqzoom');
为我工作。
答案 3 :(得分:1)
如果您在使用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;
},
希望它会对你有所帮助!