2015-08-22 109 views
-1

我試圖阻止的功能我叫defaultState單擊該文檔時,但我用stop();stop(true, true);stopPropagation();多,但無法阻止發生的動畫......很明顯,我做錯了什麼?但是什麼?停止功能,當文檔點擊

JSjsFiddle

function defaultState(){ 
    $('#me').hover(function(){ 
     $(this).animate({ 
      'background-color': '#339966' 
     },300); 
    },function(){ 
     $(this).animate({ 
      'background-color': 'red' 
     },300); 
    }); 
}; 

defaultState(); 

$(document).click(function(){ 
    defaultState.stop(true, true); 
}); 
+2

'defaultState'是一個自定義函數,它不能被停止。但是你想停止動畫? (只需要300ms?) –

+1

你從哪裏看到'defaultState.stop(true,true);'應該做些什麼?你應該閱讀一些初學者級別的教程:JavaScript,jQuery,jQuery動畫。然後再試一次 – Amit

+0

@Amit你是對的......我已經趕上停止事件,我開始想以同樣的方式停止功能:)) – Alin

回答

3

如果,你的意思,是要阻止發生任何未來的動畫,並停止所有動畫發生的條件,那麼你就可以調用.stop()然後取出事件處理程序defaultState()安裝有:

$("#me").stop(true).off(); 

或者,你可以用這個目標只有.hover()鼠標事件處理:

$("#me").stop(true).off('mouseenter mouseleave'); 
+0

謝謝,我把所有的事情從停止事件混合到停止功能..第二個是我的:) – Alin

+0

你說得對,我不想只停止300ms的動畫,這是一個更復雜的過濾器,但我只是將它作爲一個獨立的例子,而不是發佈2頁代碼......我非常習慣於停止事件,我開始希望以同樣的方式停止函數:)) – Alin

3

你需要調用stop方法不是在你的函數,它沒有這樣的方法動畫元素上。

$(document).click(function(){ 
    $('#me').stop(); 
}); 

這裏試試吧:jsfiddle

+0

http://jsfiddle.net/qv1ow2q9/1/它不工作 –

+1

似乎不太可能,OP所要做的僅僅是停止300ms的動畫。 – jfriend00

+0

補充工作示例 – Lunokhod