You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用jQuery为字典生成的select选项设置对应key的title属性?

问题:为动态添加的select选项设置对应字典key的title属性

我正在用jQuery从字典中向select标签添加选项,希望每个选项的title属性对应字典的key,但尝试的方法导致所有选项的title都被设为最后一个key。

原jQuery代码:

function addOptions(){
    var dict = {
        key1: "val1",
        key2: "val2",
        key3: "val3",
        key4: "val4"
    }

    $.each(dict, function(val, text){
        $('#mySelect').append($('<option></option>').val(val).html(text));
        // 错误尝试:每次循环都会给所有option设置title,最终全部变成最后一个key
        // $('#mySelect').children('option').attr({"title":val});
    });
}

原HTML代码:

<div class="row" style="padding-top: 20px;">
    <div class="col-3">
        <select id="mySelect">
            <option value="select">--Select--</option>
        </select>
        <br><br>
        <button class="btn btn-sm btn-primary" type="button" id="add" onclick="addOptions()">Add
            Values in Dropdown
        </button>
    </div>
</div>

解决方案

问题出在你尝试批量修改所有option的title,循环执行时每次都会覆盖所有选项的title值,最终所有选项的title都会变成最后一次循环的key。正确的做法是在创建单个option元素时就直接设置对应的title属性,这样每个选项都能绑定自己对应的key:

修改后的jQuery代码:

function addOptions(){
    var dict = {
        key1: "val1",
        key2: "val2",
        key3: "val3",
        key4: "val4"
    }

    $.each(dict, function(key, text){
        // 创建option时直接设置val、html和title
        var option = $('<option></option>')
            .val(key)
            .html(text)
            .attr('title', key); // 这里直接给当前option设置对应的key作为title
        $('#mySelect').append(option);
    });
}

说明

  • 在$.each循环中,第一个参数是字典的key,第二个是对应的value(原代码参数命名有混淆,修改后用key和text更清晰)
  • 每次循环只创建并配置当前对应的option,设置好title后再添加到select中,这样每个选项的title都是独立对应的字典key,不会被后续循环覆盖

内容的提问来源于stack exchange,提问作者Armaan Brar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 00:25:06