0
我在我的web應用程序中有六個菜單選項,當用戶將鼠標懸停在鏈接上時(ul> li> a),我切換圖像以顯示上下文相關的照片,並淡化圖像進出。但是,我注意到,當用戶在鏈接之間快速移動鼠標時,隊列無法正常處理,用戶通常會懸停在鏈接上並顯示前一個懸停的舊圖像。經過一番閱讀後,似乎正確的做法是使用stop()方法,但是當我嘗試並實現它時,ie6報告堆棧溢出。jquery停止方法導致ie6堆棧溢出
這是我的舊代碼(其中有老人形象的問題):
if(webImage != 'img/template/slide_web.png') {
$('#slide img').fadeOut(function() {
$(this).load(function() {$(this).fadeIn(); });
$(this).attr('src','img/template/slide_web.png');
});
這是我的新代碼(它解決了老問題,但會導致IE6堆疊在第一行溢出):
if(webImage != 'img/template/slide_web.png') {
$('#slide img').stop(true, true).fadeOut(function() {
$(this).load(function() {$(this).stop(true, true).fadeIn(); });
$(this).attr('src','img/template/slide_web.png');
});
我正在實施stop()方法嗎?或者有另外一種方法可以避免jQuery淡入淡出隊列丟失嗎?
謝謝,這使得事情更穩定一些,但是現在當我通過啓動另一個圖像來中斷一個圖像的褪色時,現在我在ie6中發生了堆棧溢出。這讓我回想起關於stop()函數的想法。 – Nick 2010-06-21 13:40:52
現在我剛剛用這個插件替換了我的代碼,工作正常:) http://www.hieu.co.uk/blog/index.php/imageswitch/ – Nick 2010-06-21 14:09:55
@Nick - (嗨其他尼克!)它取決於在效果上,但我認爲在這種情況下你會想'.stop(true)',而不是嘗試先完成當前動畫,這是第二個參數的作用:) – 2010-06-21 14:50:13