2011-10-31 61 views
3

我正在使用jQuery插件Cloud Zoom,並且我已經更改了初始化,以便在用戶單擊「放大按鈕」而不是懸停時縮放圖像。我不確定如何在用戶離開圖像時取消設置/刪除此事件,而且我很樂意聽到最佳做法。jQuery:取消設置/刪除功能事件的最佳做法?

這是劇本的樣子 -

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

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

( 「顯示」 是一個容器) 是綁定/解除綁定有必要嗎?看來它可能會訣竅,但我希望有一個更簡單的方法,因爲它只是一個函數。

+1

這是你的點擊功能被濫用像樣的文章。 http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/ –

+0

傑米:有趣的文章,將確保閱讀和應用這些做法。 –

回答

6

只需使用CloudZoom的破壞功能:

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

請注意,這會破壞只有第一次出現,如果你有一個以上的使用:

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

謝謝,這工作!從創作者那裏得到了同樣的答覆,但我認爲檢查數據是否存在非常重要,否則會有很多不必要的警告。 ($(this).length){$(this).data('zoom')。destroy();}($('。cloud-zoom')。each(function(){ \t \t \t \t});' –

0

所以,你想「刪除「當鼠標移出時放大的圖像?這似乎是一個可訪問性問題。另外,如果你失去了鼠標的蹤跡,那麼如果你有點搖晃你的鼠標並意外離開顯示器,那麼這意味着變焦將會離開?似乎有點笨重。爲什麼在你點擊圖像旁邊的其他地方時沒有這樣的東西?

+0

是的,這可能是一個更好的選擇。然而插件的原始功能是放棄鼠標移出的效果。我唯一的補充是用另一種方法啓動它。 –

4

對於明星插件3版本,它是

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