2016-06-29 56 views
0

我的JavaScript是非常基本的,所以我雖然我會問專家,以我的當前方法是否正確,如果有更好的,更可接受的方式。正確的方式來通過'這'功能在javascript

通常我會使用jQuery的。對事件來觸發的功能,如:

$("body").on("input", "textarea", textareaAutoGrow); 

function textareaAutoGrow() { 
    var pad = $(this).outerHeight(false) - $(this).innerHeight(); 

    this.style.height = "auto"; 
    this.style.height = (this.scrollHeight + pad) + "px"; 
} 

這樣一來,「這個」自動傳遞,但是我現在需要做的窗口調整大小一樣的東西所有textareas的事件,而不僅僅是一個特定的事件。

下面是我已經做到了:

$(window).on("resize", refreshAutoGrow); 

function refreshAutoGrow() { 
     $el = $(".text-field.autogrow").filter(function() { 
      return $(this).val(); 
     }); 

     $el.each(function() { 
      textareaAutoGrow.call(this); 
     }); 
    } 

我使用.CALL稱爲textareaAutoGrow功能 - 這是我從看jQuery的部件回升。

它有效,但正如我所說,這是一個猜測 - 這是正確的方法,還是有更多接受的方式來做我想要的?

回答

1

each觸發它調整大小循環的文字區域:

function textareaAutoGrow() { 
    var pad = $(this).outerHeight(false) - $(this).innerHeight(); 

    this.style.height = "auto"; 
    this.style.height = (this.scrollHeight + pad) + "px"; 
} 

$("body").on("input", "textarea", textareaAutoGrow); 
$(window).on("resize", funtion() { 
    $("textarea").each(textareaAutoGrow); 
}); 
+1

先上(「輸入」將無法在動態文本域工作,你需要使用的代碼形式的問題'$(「身體」)。 on(「input」,「textarea」' – jcubic

+0

現在第二個代碼將不起作用,因爲'textareas'將持有對body的引用 – jcubic

+0

Ahh,當然;;)啞巴我然後刪除那部分。它在這個答案。 – eisbehr

相關問題