javascript - 使用 jQuery 键入时减小 TextArea 中文本的大小

标签 javascript jquery

我有一个非常好的小功能,当某些 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;
});

此函数仅返回未定义。

如何在文本区域中完成此操作?

最佳答案

只需使用 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';
            }
        }
    }
});

.each中,this引用$('div.Body')[index]

并且,正如 Rory 所说,$('.TextAreaClass') 返回一个 jQuery 对象。您可能需要使用 $('.TextAreaClass')[0]; 访问该对象中的第一个 DOM 元素。

关于javascript - 使用 jQuery 键入时减小 TextArea 中文本的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14193728/

相关文章:

javascript - 单击链接时显示/隐藏元素(表单) - 通过 ajax 提交表单

javascript - 如何使用ajax将我的jquery数组保存到php

javascript - javascript中的高阶函数是什么意思?

jquery - 根据脚本状态更改文本(展开或折叠)

javascript - 显示具有已检查输入的数据属性对象的元素

javascript - jQuery 循环插件,自定义分页器选项卡

javascript - 多个选定索引查询的问题(选择选项菜单)

javascript - 更改切换 div 上的文本

javascript - GWT PopupPanel 未在正确的时间显示

javascript - 没有设置填充颜色的chart.js条形图