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

时间:2012-06-13 10:27:04

标签: jquery

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

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

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

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

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

4 个答案:

答案 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)

如果您在使用removeDatadisable停用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;
    },

希望它会对你有所帮助!