1

我有以下代码

<select id="part">
<option>noun</option>
<option>verb</option>
<option>adjective</option>
</select>

在上面的代码中,我没有每个选项标签的任何值属性。只有文本节点。

当我访问选项标签时, $("#part").val();我得到下拉框中选择的内容。即,“名词”,但是当我访问时$("#part").text(),有空字符串。

但是当我创建时,选项标签在 jquery 中动态地为

<select id="part"></select>

使用

var names=["noun","adjective","verb"];
for (var i =0;i<names.length;i++) {
    var option=$("<option>",{
            value:names[i],
            text:names[i]});
    $("#part").append(option);
}

这里需要 value 属性来选择选项。没有 value 属性, $("#part") 是未定义的。

有人可以解释这里的差异吗?如果我的理解不正确。谢谢

4

2 回答 2

1

在这里查看演示http://jsfiddle.net/yyene/yH4Fb/

您只需要获取选定的选项文本,因为有三个选项,

当你得到$("#part").val();你直接得到选定的值(只有一个选定的值)。但是当你得到$("#part").text().. 你得到整个选择文本的文本,你有三个选项和三种类型的文本。

查询

$(document).ready(function(){
    var names=["noun","adjective","verb"];
    for (var i =0;i<names.length;i++) {
        var option=$("<option>",{
                value:names[i],
                text:names[i]});
        $("#part").append(option);
    }
    
    $("#part").on('change', function() {
        alert('Value is '+$(this).val());
        var text = $("#part option:selected").text();
        alert('Text is '+text);
    });        
});  
于 2013-06-12T02:50:20.397 回答
-1

$("#part").text()不会返回任何内容,但不会返回您期望的内容(请参阅this fiddle)。

说明: text 返回对象的文本去除 html(请参阅 jQuery 文档示例),因此您将得到的是去除 html 后 select 的内部内容。

如果您想要所选值的文本,请在您的 jquery 选择器中包含 selected 选项:即$('#part option:selected').text()使用jQuery 伪选择器(也在我的小提琴中)。

于 2013-06-11T22:30:32.770 回答