2

基本的に、テキストエリアの高さを行数に基づいて変更しようとしていますが、これは質問とは無関係ですが、forループを使用せずにすべてのテキストエリアにイベントリスナーを追加するコーディングを次に示します。

$('textarea').keyup(function(event) {
    this.style.height = Math.floor(this.scrollHeight / 11) + '.1em';
});

そして、これが私のforループです:

for (i=0; i<$('textarea').length; i++) {
    $('textarea')[i].style.height = Math.floor($('textarea')[i].scrollHeight / 11) + '.1em';
}

forループは完全に機能しますが、クリーンで効率的なコーディングのために、forループを必要としない最初のコーディングのように見せたいと思います。

また、ifドキュメント内のこれらすべてがready機能であることに注意してください。

4

5 に答える 5

4

メソッドを試すことができますeach()

$('textarea').each(function(){
     $(this).css('height', Math.floor(this.scrollHeight / 11) + '.1em')
})

jQuery.each()

于 2012-07-18T03:50:27.637 に答える
3

私は少し遅れましたトップアンサーに同意します! +1

$('textarea').each(function(ele){
  ele.style.height = Math.floor(ele.scrollHeight / 11) + '.1em';
}};
于 2012-07-18T03:52:09.537 に答える
2
$('textarea').keyup(function(event) {

    // change height of all textarea including current
    $('textarea').css('height', Math.floor(this.scrollHeight / 11) + '.1em');

    // But using this like following
    // will change height of current textarea

    // $(this).css('height', Math.floor(this.scrollHeight / 11) + '.1em');

});
于 2012-07-18T03:53:14.290 に答える
0

コードパラドックスで答えを充実させたいと思います。

var jq_textarea = $('textarea');
jq_textarea.keyup(function(event) {
    jq_textarea.css('height', Math.floor(this.scrollHeight / 11) + '.1em');
});

基本的に、各キーストロークでのDOMトラバーサルからあなたを救うでしょう。

于 2012-07-18T04:07:59.630 に答える
0
$('textarea').keyup(function() {

      $("textarea").each(function () {
        this.height(Math.floor(this.scrollHeight / 11) + '.1em')

      });
    });
于 2012-07-18T04:01:52.240 に答える