2012-04-01 46 views
0

我堅持我的代碼。我使用focusin()函數來檢測textarea上的用戶交互。我的理念:jQuery中的新手 - focusIn和textareas上出

  • 第一的init =>所有被摺疊帶自動高度(50像素)
  • 第一對焦在=>聚焦元素將擴大到更多的像素(150像素)
  • 現在,我知道,每當我重新關注我的任何元素時,我都會得到一個,現在是opend。因此我創建了一個原始例程這一想法:

var active = false; 
myTextAreas.focusin(function() { 
    if (active == true) { 
     myTextAreas.animate({"height" : 50}, 300); 
     $(this).animate({"height" : 150}, 500); 
    } else { 
     $(this).animate({"height" : 150}, 500); 
     active = true; 
    }; 

myTextAreas =>對象與我的HTML元素(文本域)。第一次=>執行else,第二次=>總是使用if語句,它每次都調整所有元素的大小,而不是將元素移動到更高的高度。它主要起作用,但第一次當我做我的小腳本時,我的箱子首先調整大小,而另一個箱子則是新的焦點集成在一起,而新的animate()函數開始太早了。然後它工作...嗯。但我認爲我的代碼不是很漂亮?

我想念我的概念的一個特點。當我關注任何textarea時,我想要將所有元素重新制作回來,類似於我的if語句中的效果。但是,我怎麼能這樣說呢,但是隻能在我的其他元素上,而不是在我關注的textareas上?

也許我的觀念不好?順便說一下,我打開了一個新的...。

回答

0

可以擺脫主動變的/需要使用jQuery的模糊事件綁定跟蹤「有效」狀態 - 你也並不需要調用的所有輸入字段動畫

myTextAreas.on('focus',function() { 
    $(this).animate({ height : 150 }, 500); 
}); 

myTextAreas.on('blur',function() { 
$(this).animate({ height : 50 }, 300); 
}); 

演示: http://jsbin.com/axatin/3/edit#javascript,html,live