Jquery 如何解除绑定和重新绑定jqzoom

Jquery 如何解除绑定和重新绑定jqzoom,jquery,Jquery,我已经尝试了解除绑定和重新绑定jqzoom,如下所示: $('.jqzoom').unbind(); $('.jqzoom').jqzoom(options); 但什么也没有发生。有人能帮我怎么做吗 链接:尝试使用 $.jqzoom.disable('.jqzoom') 然后 $.jqzoom.enable('.jqzoom') 正如jquery.jqzoom core.js的未打包源代码中所建议的那样,行686 $('.jqzoom').removeData('jqzoom');

我已经尝试了解除绑定和重新绑定jqzoom,如下所示:

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

$('.jqzoom').jqzoom(options);
但什么也没有发生。有人能帮我怎么做吗

链接:

尝试使用

$.jqzoom.disable('.jqzoom')
然后

$.jqzoom.enable('.jqzoom')
正如
jquery.jqzoom core.js的未打包源代码中所建议的那样,行
686

$('.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;
    },

希望它能帮助你

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

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

<a class="zoom_link"><img id="product_thumb_image" src="...link to image..." /></a>
然后,您需要删除以下数据:

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

最后,我们需要恢复jqzoom通过在其中添加一些其他元素而更改的原始元素内容

i = jQuery('.product_thumb_image').clone();
jQuery('.zoom_link').html( i.prop('outerHTML') );
上面的代码所做的是克隆内部的图像,并用图像替换“zoom\u link”元素的全部内容,就像我们调用jqzoom之前一样。 在此之后,您可以再次调用jqzoom,它将正常工作

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

通过使用.unbind()可以分离元素上的所有事件侦听器,但不分离元素周围的标记-如果您正在讨论此问题,则有解决方案。:)可能是你想要的。我有两张不同的照片。第一次出现pic1,jqzoom工作正常,当我单击pic2时,我正在更改图像属性。图像变化很好。但在缩放时,它会显示旧图像。如何在不刷新页面的情况下实现这一点?我尝试使用:$('.jqzoom').data('jqzoom').disable();但是我得到了以下错误:“TypeError:$(…).data(…).disable不是一个函数。”(如果您记录这个:
console.log([$('.jqzoom'),$('.jqzoom').data('jqzoom')])
?可能您正在使用另一个版本,或者您为jqzoom实例设置了另一个名称。我尝试使用$.jqzoom.disable('.jqzoom'),但是我得到了这个错误:“TypeError:api.disable不是函数”。对此有什么想法吗?
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();
i = jQuery('.product_thumb_image').clone();
jQuery('.zoom_link').html( i.prop('outerHTML') );
jQuery('.zoom_link').jqzoom({'preloadImages':true, zoomType: 'innerzoom' });