所以我有這個textarea在focus()上展開,並返回到blur()上的原始位置。
我遇到的問題是當點擊一個按鈕時停止模糊函數傳播(保持textarea爲焦點)。模糊功能事件停止傳播
$("#mytextarea").focus(function(){
$(this).animate({"height": "50px",}, "fast");
});
$("#mytextarea").blur(function(e){
if (e.target.id === 'button'){
return false;
e.stopPropagation();
e.cancelBubble = true;
}
else{
$('#mytextarea').animate({"height": "20px",}, "fast");
}
});
我想出了一個解決辦法是更換:
$("#mytextarea").blur(function(e)
與
$(document).click(function(e)
但說實話,我不希望使用document.click,我的網頁已經是重在js上使用這種方法會讓它變慢。這裏有一個Fiddle
三件事情。不執行'return'語句後的代碼。而且你不需要手動執行'e.cancelBubble = true;'; jQuery規範冒泡的預防 - 只需調用'e.stopPropagation()',你應該很好。在事件處理程序中使用'return false;'有效地執行和手動調用'e.preventDefault()'和'e.stopPropagation()'...一樣的功能,所以你不需要你有什麼 - 選擇使用什麼。 – Ian
@Ian好吧,我只是試着用.stopPropagation(),但結果是一樣的,謝謝你 – Aaron
對我來說有點晚了,但我認爲這可能是相關的:[委派焦點和模糊事件(在Quirksmode.org)](http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html)。 –