1

いくつかの div がオーバーフローし始めた場合に画面に表示されるときに、その内部のテキスト サイズを縮小する、非常に優れた小さな関数があります。

$(function(){
    $('div.Body').each(function (index) {
        if ($('div.Body')[index].scrollHeight > 150) {
            $('div.Body')[index].style.fontSize = 'small';
            if ($('div.Body')[index].scrollHeight > 150) {
                $('div.Body')[index].style.fontSize = 'x-small';
                if ($('div.Body')[index].scrollHeight > 150) {
                    $('div.Body')[index].style.fontSize = 'xx-small';
                }
            }
        }
    });
})

ユーザーがテキストを送信するときに textArea にテキストを入力しているときに、同じ/類似の関数を使用して同じことをしたかったのですが、textArea には scrollHeight の関数がないようです:

$(function() {
    window.status = $('.TextAreaClass').scrollHeight;
});

この関数は undefined を返すだけです。

textArea でこれを達成するにはどうすればよいですか?

4

2 に答える 2

1

ループの反復ごとthisに取得する代わりに、単純に を使用します。$('div.Body')[index]

$('div.Body').each(function () { // Remove the redundant parameter
    if (this.scrollHeight > 150) {
        this.style.fontSize = 'small';
        if (this.scrollHeight > 150) {
            this.style.fontSize = 'x-small';
            if (this.scrollHeight > 150) {
                this.style.fontSize = 'xx-small';
            }
        }
    }
});

では、.eachthis参照し$('div.Body')[index]ます。

そして、Rory が言ったよう$('.TextAreaClass')に、jQuery オブジェクトを返します。$('.TextAreaClass')[0];おそらく、そのオブジェクトの最初の DOM 要素にアクセスするために使用したいと思うでしょう。

于 2013-01-07T10:18:18.367 に答える
0

scrollHeightscrollHeightはネイティブの JavaScript メソッドであり、jQuery のメソッドではありませんtextarea

window.status = $('.TextAreaClass')[0].scrollHeight;

[0]ネイティブ DOM 要素である jQuery オブジェクトの最初の要素を返す に注意してください。また、現在のコードで選択した要素をキャッシュして、パフォーマンスを向上させる必要があります。これを試して:

$('div.Body').each(function (index) {
    var div = $('div.Body')[index];
    if (div.scrollHeight > 150) {
        div.style.fontSize = 'small';
        if (div.scrollHeight > 150) {
            div.style.fontSize = 'x-small';
            if (div.scrollHeight > 150) {
                div.style.fontSize = 'xx-small';
            }
        }
    }
});

最後に、すべての条件がチェックされているため、そのコードのロジックに欠陥があるよう> 150です。

于 2013-01-07T10:13:08.297 に答える