jQuery 属性操作:HTML代码、文本、值

🎉摘要:本章详解 jQuery 的 html()、text()、val() 三个核心方法。涵盖操作 HTML 内容、纯文本及表单值的具体用法,包括无参获取、字符串设置、函数动态修改及数组多选设置。提供完整代码实例,助您快速掌握 jQuery DOM 内容与表单交互操作。

本章将介绍 jQuery 的 html()、text()、val() 三个方法,每个方法的作用如下表:

方法核心作用底层依赖关键特性

html()

操作元素的 HTML 内容(含标签)

DOM 的 innerHTML

  1. 仅获取第一个匹配元素的内容

  2. 解析 HTML 标签

  3. 有 XSS(跨站脚本攻击,Cross-Site Scripting) 风险

text()

操作元素的纯文本内容(无标签)

DOM 的 textContent

  1. 获取所有匹配元素的合并文本

  2. 转义 HTML 标签

  3. 无 XSS 风险

val()

操作表单元素的 value 属性 / 选中态表单元素 value 属性
  1. 仅针对表单元素(input/select/textarea 等)

  2. 支持数组设置多选选中

方法详解

html ([val|fn])

该方法用来操作 HTML 内容。用法如下:

(1)无参 html() 方法:用于获取 HTML 内容,但是仅返回第一个匹配元素的完整 HTML 结构(含标签)。例如:

<form lang="zh-CN">
    <p>
        <label>姓名:</label>
        <input id="myName" type="text" value="张三" placeholder="你的姓名" />
    </p>
    <p>
        <label>我的特长:</label>
    </p>
    <select id="specialty" title="我的特长" multiple>
        <option value="val1">擅长编写代码</option>
        <option value="val2">擅长户外生存</option>
        <option value="val3">擅长下厨</option>
        <option value="val4">擅长打篮球</option>
        <option value="val5">擅长唱歌,歌声悦耳动听</option>
    </select>
</form>

运行如下 jQuery 代码:

var html = $('p').html();
log.info(html);

输出的结果为:

<label>姓名:</label> <input id="myName" type="text" value="张三" placeholder="你的姓名">

(2)传字符串:用来设置 HTML 内容,给所有匹配元素设置相同的 HTML 内容(标签会被浏览器解析)。例如:

<form lang="zh-CN">
    <p>
        <label>姓名:</label>
        <input id="myName" type="text" value="张三" placeholder="你的姓名" />
    </p>
    <p>
        <label>我的特长:</label>
    </p>
    <select id="specialty" title="我的特长" multiple>
        <option value="val1">擅长编写代码</option>
        <option value="val2">擅长户外生存</option>
        <option value="val3">擅长下厨</option>
        <option value="val4">擅长打篮球</option>
        <option value="val5">擅长唱歌,歌声悦耳动听</option>
    </select>
</form>

运行如下 jQuery 代码:

$('p').html('<b>新增的内容</b>')

修改后的 HTML 如下:

<form lang="zh-CN">
    <p><b>新增的内容</b></p>
    <p><b>新增的内容</b></p>
    <select id="specialty" title="我的特长" multiple>
        <option value="val1">擅长编写代码</option>
        <option value="val2">擅长户外生存</option>
        <option value="val3">擅长下厨</option>
        <option value="val4">擅长打篮球</option>
        <option value="val5">擅长唱歌,歌声悦耳动听</option>
    </select>
</form>

(3)传递函数:用来动态设置 HTML 内容,函数接收两个参数:index(元素索引)、oldHtml(原 HTML 内容),返回值作为新内容。例如:

<form lang="zh-CN">
    <p>
        <label>姓名:</label>
        <input id="myName" type="text" value="张三" placeholder="你的姓名" />
    </p>
    <p>
        <label>我的特长:</label>
    </p>
    <select id="specialty" title="我的特长" multiple>
        <option value="val1">擅长编写代码</option>
        <option value="val2">擅长户外生存</option>
        <option value="val3">擅长下厨</option>
        <option value="val4">擅长打篮球</option>
        <option value="val5">擅长唱歌,歌声悦耳动听</option>
    </select>
</form>

运行如下 jQuery 代码:

$('p').html(function(index, oldHtml){
    return oldHtml + '<i>' + index + '</i>-增加了内容';
})

修改后的 HTML 如下:

<form lang="zh-CN">
    <p>
        <label>姓名:</label>
        <input id="myName" type="text" value="张三" placeholder="你的姓名">
        <i>0</i>-增加了内容</p>
    <p>
        <label>我的特长:</label>
        <i>1</i>-增加了内容</p>
    <select id="specialty" title="我的特长" multiple>
        <option value="val1">擅长编写代码</option>
        <option value="val2">擅长户外生存</option>
        <option value="val3">擅长下厨</option>
        <option value="val4">擅长打篮球</option>
        <option value="val5">擅长唱歌,歌声悦耳动听</option>
    </select>
</form>

text ([val|fn])

该方法用来操作纯文本内容。用法如下:

(1)无参 text():用于获取纯文本内容,将返回所有匹配元素的纯文本(忽略所有 HTML 标签)。例如:

<form lang="zh-CN">
    <p>
        <label>姓名:</label>
        <input id="myName" type="text" value="张三" placeholder="你的姓名" />
    </p>
    <p>
        <label>我的特长:</label>
    </p>
    <select id="specialty" title="我的特长" multiple>
        <option value="val1">擅长编写代码</option>
        <option value="val2">擅长户外生存</option>
        <option value="val3">擅长下厨</option>
        <option value="val4">擅长打篮球</option>
        <option value="val5">擅长唱歌,歌声悦耳动听</option>
    </select>
</form>

运行如下 jQuery 代码:

var text = $('p').text();
log.info(text);

输出的结果为:

姓名: 我的特长:

(2)传字符串:用于设置纯文本内容,将给所有匹配元素设置纯文本(HTML 标签会被转义为实体,如 < → &lt;)。例如:

<form lang="zh-CN">
    <p>
        <label>姓名:</label>
        <input id="myName" type="text" value="张三" placeholder="你的姓名" />
    </p>
    <p>
        <label>我的特长:</label>
    </p>
    <select id="specialty" title="我的特长" multiple>
        <option value="val1">擅长编写代码</option>
        <option value="val2">擅长户外生存</option>
        <option value="val3">擅长下厨</option>
        <option value="val4">擅长打篮球</option>
        <option value="val5">擅长唱歌,歌声悦耳动听</option>
    </select>
</form>

运行如下 jQuery 代码:

$('p').text('新增的内容');

修改后的 HTML 如下:

<form lang="zh-CN">
    <p>新增的&lt;strong&gt;内容&lt;/strong&gt;</p>
    <p>新增的&lt;strong&gt;内容&lt;/strong&gt;</p>
    <select id="specialty" title="我的特长" multiple>
        <option value="val1">擅长编写代码</option>
        <option value="val2">擅长户外生存</option>
        <option value="val3">擅长下厨</option>
        <option value="val4">擅长打篮球</option>
        <option value="val5">擅长唱歌,歌声悦耳动听</option>
    </select>
</form>

(3)传函数:用来动态设置纯文本内容,该函数接收两个参数:index(元素索引)、oldHtml(原 HTML 内容),返回值作为新内容。例如:

<form lang="zh-CN">
    <p>
        <label>姓名:</label>
        <input id="myName" type="text" value="张三" placeholder="你的姓名" />
    </p>
    <p>
        <label>我的特长:</label>
    </p>
    <select id="specialty" title="我的特长" multiple>
        <option value="val1">擅长编写代码</option>
        <option value="val2">擅长户外生存</option>
        <option value="val3">擅长下厨</option>
        <option value="val4">擅长打篮球</option>
        <option value="val5">擅长唱歌,歌声悦耳动听</option>
    </select>
</form>

运行如下 jQuery 代码:

$('p').text(function(index, oldText){
    return oldText + '<i>' + index + '</i>-增加了内容';
});

修改后的 HTML 如下:

<form lang="zh-CN">
    <p>
        姓名:
       
    &lt;i&gt;0&lt;/i&gt;-增加了内容</p>
    <p>
        我的特长:
    &lt;i&gt;1&lt;/i&gt;-增加了内容</p>
    <select id="specialty" title="我的特长" multiple>
        <option value="val1">擅长编写代码</option>
        <option value="val2">擅长户外生存</option>
        <option value="val3">擅长下厨</option>
        <option value="val4">擅长打篮球</option>
        <option value="val5">擅长唱歌,歌声悦耳动听</option>
    </select>
</form>

val ([val|fn|arr])

操作表单值 / 选中表单状态。该方法专门针对表单元素,是表单交互的核心方法,支持额外的“数组参数” 设置多选。用法如下:

(1)无参:获取表单值,用于返回第一个匹配表单元素的 value 属性值(或选中值)。例如

<form lang="zh-CN">
    <p>
        <label>姓名:</label>
        <input id="myName" type="text" value="张三" placeholder="你的姓名" />
    </p>
    <p>
        <label>我的特长:</label>
    </p>
    <select id="specialty" title="我的特长" multiple>
        <option value="val1">擅长编写代码</option>
        <option value="val2">擅长户外生存</option>
        <option value="val3">擅长下厨</option>
        <option value="val4">擅长打篮球</option>
        <option value="val5">擅长唱歌,歌声悦耳动听</option>
    </select>
</form>

运行如下 jQuery 代码:

var val = $('#myName').val();
log.info('我的姓名:' + val);

输出内容如下:

我的姓名:张三

(2)传字符串:设置表单值,用于给所有匹配表单元素设置 value 属性。例如:

<input id="myName" type="text" value="张三" placeholder="你的姓名" />

运行如下 jQuery 代码:

$('#myName').val('李四');

将设置输入框的值为“李四”。

(3)传函数:动态设置表单值,其中函数的参数为 index(索引)、oldVal(原值),注意原值是字符串,需手动转类型。例如:

<input id="myName" type="text" value="张三" placeholder="你的姓名" />

运行如下 jQuery 代码:

$('#myName').val(function(index, oldVal){
    return oldVal + ' - 改名了';
});

将设置输入框的值为“张三 - 改名了”。

(4)传数组:设置多选控件选中状态,这仅针对复选框、多选下拉框(multiple),数组元素为要选中的 value 值。例如:

<form lang="zh-CN">
    <p>
        <label>姓名:</label>
        <input id="myName" type="text" value="张三" placeholder="你的姓名" />
    </p>
    <p>
        <label>我的特长:</label>
    </p>
    <select id="specialty" title="我的特长" multiple>
        <option value="val1">擅长编写代码</option>
        <option value="val2">擅长户外生存</option>
        <option value="val3">擅长下厨</option>
        <option value="val4">擅长打篮球</option>
        <option value="val5">擅长唱歌,歌声悦耳动听</option>
    </select>
</form>

运行如下 jQuery 代码:

$('#specialty').val(['val1', 'val3']);

将选中 <select> 中的多个选项。

完整示例

下面示例通过“点击自己动手试一试”可以尝试各种方法的效果:

示例:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JQeury 教程</title>
    <!-- 引入 jQuery 库 -->
    <script type="text/javascript" src="https://www.hxstrive.com/cdn/libs/jquery/3.7.1/jquery.min.js"></script>
    <!-- 引入 loglevel 库,方便在 DOM 中打印日志 -->
    <script src="https://www.hxstrive.com/preview_code/libs/custom_loglevel.js"></script>
    <style>
        button { background: #EEE !important; border: 1px solid #ccc !important; 
            min-width: 40px; padding: 5px; margin: 5px; cursor: pointer; }
        sup {color: red; font-size: 12px; background: transparent !important;}

        /* 效果样式 */
        .myClass { box-shadow: inset 0 0 3px red; }
        p[name="myName"] { color: blue; }
    </style>
</head>
<body>

    <div class="app">
        <h3>HTML代码/文本/值</h3>
        <form lang="zh-CN">
            <p>
                <label>姓名:</label>
                <input id="myName" type="text" value="张三" placeholder="你的姓名" />
            </p>
            <p>
                <label>我的特长:</label>
            </p>
            <select id="specialty" title="我的特长" multiple>
                <option value="val1">擅长编写代码</option>
                <option value="val2">擅长户外生存</option>
                <option value="val3">擅长下厨</option>
                <option value="val4">擅长打篮球</option>
                <option value="val5">擅长唱歌,歌声悦耳动听</option>
            </select>
        </form>
    </div>

    <div>
        <!-- html([val|fn]) 取得第一个匹配元素的html内容 -->
        <button type="button" onclick="
                var html = $('p').html();
                log.info(html);
            ">html()</button>

        <button type="button" onclick="
                $('p').html('<b>新增的内容</b>')
            ">html(str)</button>

        <button type="button" onclick="
                $('p').html(function(index, oldHtml){
                    return oldHtml + '<i>' + index + '</i>-增加了内容';
                })
            ">html(function(){})</button>

        <!-- text([val|fn]) 取得所有匹配元素的内容 -->
        <button type="button" onclick="
                var text = $('p').text();
                log.info(text);
            ">text()</button>
        
        <button type="button" onclick="
                $('p').text('新增的<strong>内容</strong>');
            ">text(str)</button>

        <button type="button" onclick="
                $('p').text(function(index, oldText){
                    return oldText + '<i>' + index + '</i>-增加了内容';
                });
            ">text(function(){})</button>

        <!-- val([val|fn|arr]) 获得匹配元素的当前值 -->
        <button type="button" onclick="
                var val = $('#myName').val();
                log.info('我的姓名:' + val);
            ">val()</button>

        <button type="button" onclick="
                $('#myName').val('李四');
            ">val(str)</button>
        
        <button type="button" onclick="
                $('#myName').val(function(index, oldVal){
                    return oldVal + ' - 改名了';
                });
            ">val(function(){})</button>

        <button type="button" onclick="
                $('#specialty').val(['val1', 'val3']);
            ">val(array)</button>
    </div>
    
</body>
</html>

看看效果👉自己动手试一试 »

更多关于 jQuery 的知识请阅读后续教程。

  

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号