JQuery中.val/.text/.html

本文详细介绍了jQuery中操作元素内容的三种方法:.html(), .text() 和 .val() 的用法及区别。通过实例展示了如何读取和修改网页元素的HTML内容、纯文本内容以及表单元素的值。
  1. .html()用为读取和修改元素的HTML标签
  2. .text()用来读取或修改元素的纯文本内容
  3. .val()用来读取或修改表单元素的value值。

这三个方法功能上的对比

  1. .html(),.text(),.val()三种方法都是用来读取选定元素的内容;只不过.html()是用来读取元素的HTML内容(包括其Html标签),.text()用来读取元素的纯文本内容,包括其后代元素,.val()是用来读取表单元素的"value"值。其中.和.text()方法不能使用在表单元素上,而.val()只能使用在表单元素上;另外.html()方法使用在多个元素上时,只读取第一个元素;.val()方法和.html()相同,如果其应用在多个元素上时,只能读取第一个表单元素的"value"值,但是.text()和他们不一样,如果.text()应用在多个元素上时,将会读取所有选中元素的文本内容。
  2. .html(htmlString),.text(textString)和.val(value)三种方法都是用来替换选中元素的内容,如果三个方法同时运用在多个元素上时,那么将会替换所有选中元素的内容。
  3. .html(),.text(),.val()都可以使用回调函数的返回值来动态的改变多个元素的内容。

例子:<div id="div">

 

    <p>here is a paragram</p>
    <div>here is a big DIV</div>
</div>

function showVal()
{
   var div = $("#div");
    alert("showVal():  "+div.val());
显示为空
}
function showHtml()
{

   var div = $("#div");
   alert("showHtml():  "+div.html());
显示为:
<p>here is a paragram</p>
 <div>here is a big DIV</div>
}
function showText()
{var div = $("#div");
    alert("showText():  "+div.text());
显示为:
here is a paragram
here is a big DIV
    }
总结:val()---一般 用在input上,而不用在其他元素,用来获取input或者是select的值
html()和text()可用在多种元素上,但是html()相当于依据源代码返回,也就是在返回的内容中会包含各种tag,而text()则相当于是依据页面显示返回,返回的内容是出去各种tag之间的内容

html属性中有两个方法,一个有参,一个无参

       1. 无参html():取得第一个匹配元素的html内容。这个函数不能用于XML文档。但可以用于XHTML文档,返回的是一个String

    例子:

          html页面代码:<div><p>Hello</p></div>

           jquery代码:$("div").html();

          结果:Hello

     2.有参html(val):设置每一个匹配元素的html内容。这个函数不能用于XML文档。但可以用于XHTML文档。返回一个jquery对象

         html页面代码:<div></div>

        jquery代码:$("div").html("<p>Nice to meet you</p>");

        结果:[ <div><p> Nice to meet you</p></div> ]      

其次,text属性中有两个方法,一个有参,一个无参

        1. 无参text():取得所有匹配元素的内容。结果是由所有匹配元素包含的文本内容组合起来的文本。返回的是一个String

         例子:

            html页面代码:<p><b>Hello</b> fine</p>

                                  <p>Thank you!</p>

           jquery代码:$("p").text();

          结果:HellofineThankyou!

  

         2.有参text(val):设置所有匹配元素的文本内容,与 html() 类似, 但将编码 HTML (将 "<" 和 ">" 替换成相应的HTML实体).返回一个jquery对象

           html页面代码:<p>Test Paragraph.</p>

         jquery代码:$("p").text("<b>Some</b> new text.");

          结果:[ <p><b>Some</b> new text.</p> ]

最后,val()属性中也有两个方法,一个有参,一个无参。

       1.无参val():获得第一个匹配元素的当前值。在 jQuery 1.2 中,可以返回任意元素的值了。包括select。如果多选,将返回一个数组,其包含所选的值。

     返回的是一个String、 array

 

       结果:[ <p><b>Single:</b>Single<b>Multiple:</b>Multiple, Multiple3</p>]

例子: //多选下拉框,$('#multiple').val()返回数组

 

//$("#multiple").val().join(", "))以,连接数组中每个值

 

html页面代码 :

<p></p><br/>
<select id="single">
  <option>Single</option>
  <option>Single2</option>
</select>
<select id="multiple" multiple="multiple">
  <option selected="selected">Multiple</option>
  <option>Multiple2</option>
  <option selected="selected">Multiple3</option>
</select>

          jquery代码:

("p").append( "<b>Single:</b> "   + $("#single").val() + " <b>Multiple:</b> " + $("#multiple").val().join(", "));

          2.有参val(val):设置每一个匹配元素的值。在 jQuery 1.2, 这也可以为check,select,radio元件赋值,返回一个jquery对象   

   html页面代码:

         <input type="text"/>

         jquery代码:$("input").val("hello world!");

          结果:hello world!

<think> 我们正在讨论jQuery.val()和.text()方法的区别。根据用户提供的引用,可以总结如下: 1. 适用对象不同: - .val():专门用于表单元素(如input, select, textarea等)[^3][^4][^5]。 - .text():用于普通HTML元素(如div, p, span等)[^3][^5]。 2. 获取内容不同: - .val():获取表单元素的value属性值[^1][^2][^4]。 - .text():获取元素内所有文本内容(包括子元素的文本,但不包括HTML标签)[^1][^2][^5]。 3. 当应用于多个元素时: - .val():即使选择器匹配多个表单元素,也只返回第一个元素的value值[^1][^2]。 - .text():会返回所有匹配元素的文本内容(拼接成一个字符串)[^1][^2]。 4. 设置值时的行为: - .val('值'):设置表单元素的值。 - .text('文本'):设置元素的文本内容(会覆盖原有内容,且传入的内容会被当作纯文本,即使包含HTML标签也不会被解析)。 5. 示例对比: - 对于输入框:使用.val()获取输入的值[^3][^4]。 - 对于div:使用.text()获取其内部的文本。 6. 错误用法: - 在非表单元素上使用.val():可能返回undefined或不期望的值[^3]。 - 在表单元素上使用.text():对于input等表单元素,.text()无法获取输入的值,因为输入值不在元素的文本内容中,而是在value属性中[^5]。 具体到select下拉框: - 获取选中项的值:使用.val()(返回选中项的value属性值)。 - 获取选中项的文本:使用.text(),但必须作用于选中的option上(如:$('select option:selected').text())。 因此,在用户的问题中,获取select下拉框的值应该使用.val(),而如果想获取选中项显示的文本,则应该使用.text(),并且作用在选中的option上。 总结表格: | 方法 | 适用元素 | 获取内容 | 设置内容 | 多元素处理 | |--------|----------------|--------------------------|-----------------------|------------------------------| | .val() | 表单元素 | 表单元素的value属性值 | 设置表单元素的value值 | 只返回第一个元素的value值 | | .text()| 普通HTML元素 | 元素及其子元素的纯文本内容 | 设置元素的纯文本内容 | 返回所有元素文本的拼接字符串 | 注意:在设置值时,.text()会覆盖元素内原有内容,且传入的HTML标签会被转义成纯文本显示。 引用说明: [^1] 和 [^2] 指出:.val()和.html()在多个元素上只取第一个,而.text()会取所有元素的文本。 [^3] 强调:.val()用于表单元素,.text()用于普通元素,并给出了示例和错误用法。 [^4] 给出了一个.val()在input上使用的例子。 [^5] 明确说明:.val()用于input元素(或任何有value属性的元素),而.text()不能用于input元素。 因此,针对用户的问题“jQuery.val()和.text()获取值的区别”,我们总结如下: </think> ### jQuery中`.val()`与`.text()`获取值的区别 #### 1. **作用对象不同** | 方法 | 适用元素类型 | 示例 | |-----------|------------------------------|----------------------------| | `.val()` | **表单元素**(input、select、textarea等) | `$('input').val()` | | `.text()` | **普通HTML元素**(div、p、span等) | `$('div').text()` | - **核心区别**:`.val()`专为表单控件设计,`.text()`用于非表单元素[^3][^5] #### 2. **获取内容不同** ```html <!-- 示例代码 --> <input type="text" value="表单值" id="inputEl"> <div id="divEl">文本内容 <span>子元素文本</span></div> ``` ```javascript // .val() 获取value属性值 console.log($('#inputEl').val()); // 输出:"表单值" // .text() 获取所有子元素的纯文本(不含HTML标签) console.log($('#divEl').text()); // 输出:"文本内容 子元素文本" ``` - **关键差异**: - `.val()`返回元素的`value`属性值 - `.text()`返回元素及其子元素的**纯文本拼接字符串**(自动忽略HTML标签)[^1][^5] #### 3. **多元素处理差异** ```html <input class="multi" value="值1"> <input class="multi" value="值2"> ``` ```javascript // .val() 始终返回第一个元素的值 $('.multi').val(); // 结果:"值1" // .text() 返回所有匹配元素的文本组合 $('.multi').text(); // 结果:"值1值2" ``` - **集合处理规则**: - `.val()`在元素集合上**只取第一个元素的值**[^1][^2] - `.text()`在元素集合上**拼接所有元素的文本**[^1][^2] #### 4. **特殊场景对比** **下拉框(select)取值**: ```html <select id="fruit"> <option value="apple_v">苹果</option> </select> ``` ```javascript // 正确:获取value属性 $('#fruit').val(); // 返回:"apple_v" // 错误:在select上直接.text()返回空 $('#fruit').text(); // 返回:"" // 正确获取选项文本:需定位到option $('#fruit option:selected').text(); // 返回:"苹果" ``` > **注意**:直接在`select`元素上调用`.text()`无效,必须指定`option:selected`[^3] **内容设置差异**: ```javascript // .val() 设置表单值 $('input').val('新值'); // 修改value属性 // .text() 设置纯文本(自动转义HTML) $('div').text('<b>加粗</b>'); // 页面显示:<b>加粗</b> ``` #### 5. **总结对比表** | 特性 | `.val()` | `.text()` | |--------------|-----------------------------|----------------------------| | **适用对象** | 表单元素 | 普通HTML元素 | | **返回值** | `value`属性值 | 纯文本内容(含子元素) | | **多元素处理**| 返回第一个元素的值 | 拼接所有元素的文本 | | **HTML处理** | 不涉及 | 自动忽略/转义HTML标签 | | **典型用例** | `input.value`/`select.value`| `div.innerText` | > **黄金法则**: > - 操作表单值 → 用`.val()` > - 获取/设置纯文本 → 用`.text()` > - 避免交叉使用(如在`div`上用`.val()`会返回`undefined`)[^3][^5]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值