【问题标题】:jQuery: best practice for unsetting / removing function events?jQuery:取消设置/删除函数事件的最佳实践?
【发布时间】:2011-12-19 00:10:36
【问题描述】:

我正在使用 jQuery 插件 Cloud Zoom,并且我已经更改了初始化,以便在用户单击“放大按钮”而不是悬停时缩放图像。我不确定当用户离开图像时如何取消设置/删除此事件,我很想知道最佳做法是什么。

这就是脚本的样子 -

$('.magnify').click(function() {
    $('.cloud-zoom').CloudZoom({ showTitle: false });
    return false;
});

$('.display').mouseout(function() {
  // unset?
});

(".display" 是一个容器) 绑定/取消绑定是必要的吗?似乎它可以解决问题,但我希望有一种更简单的方法,因为它只有一个功能。

【问题讨论】:

标签: jquery reset unset


【解决方案1】:

只需使用 CloudZoom 的销毁功能:

$('.cloud-zoom').data('zoom').destroy();

请注意,如果您有多个用途,这只会破坏第一次出现:

$('.cloud-zoom').each(function(){
  $(this).data('zoom').destroy();
});

【讨论】:

  • 谢谢,成功了!从创作者那里也得到了同样的回复,但是我认为检查数据是否存在很重要,否则会有很多不必要的警告。 $('.cloud-zoom').each(function() { if ($(this).length) { $(this).data('zoom').destroy(); } });
【解决方案2】:

对于 Star Plugins 版本 3,它是

$('.cloudzoom').data('CloudZoom').destroy();

【讨论】:

    【解决方案3】:

    所以你想在鼠标悬停时“删除”缩放的图像?这似乎是一个可访问性问题。另外,如果您失去了对鼠标的跟踪,这意味着如果您稍微摇晃鼠标并意外离开显示屏,缩放功能就会消失?似乎有点笨拙。为什么不点击图片以外的其他地方时出现类似的内容?

    【讨论】:

    • 是的,这可能是一个更好的选择。然而插件的原始功能是中止鼠标移出的效果。我唯一的补充是用另一种方法启动它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多