如何基于当前语言动态设置下拉框关联的span标签文本?
问题描述
我在jQuery开发中遇到需求:需根据当前语言显示Chosen选择器的默认文本。当语言为阿拉伯语(ar-KW)时显示“اختر منفذ”,英语时显示“Select an Option”,可通过MYLang.ReturnLang() == "ar-KW" ? "اختر منفذ" : "Select an Option"获取对应文本。
现有jQuery代码如下:
for (var i in Result.d.P_DISPATCH_DATA) { var row = "<tr align='center' id='tr" + Result.d.P_DISPATCH_DATA[i].DISPATCH_RECID + "' class='record'> " + "<td>" + //(rowNo + 1) + "</td><td>" + Result.d.P_DISPATCH_DATA[i].CUSTOMER_NAME + "</td> <td style='width:150px'>"; row += "<select id='ddl_Port" + Result.d.P_DISPATCH_DATA[i].DISPATCH_RECID + "' class='form-control chosen-select chosen-rtl' tabindex='1'><option value=''></option>"; var countriesPorts = Result.d.P_PORTS.filter( (d) => d.COUNTRY_ID == Result.d.P_DISPATCH_DATA[i].PICKUP_COUNTRY_ID, ); if (countriesPorts != null) { if (countriesPorts.length > 0) { for (var j in countriesPorts) { row += " <option value='" + countriesPorts[j].PORT_ID + "'>" + countriesPorts[j].PORT_NAME + "</option> "; } row += " </select></td>"; } } }
渲染后的HTML中,Chosen生成的<span>始终显示英文“Select an Option”,需要替换为对应语言的文本。
解决方案
方法一:初始化Chosen时设置占位符(推荐)
Chosen插件支持通过placeholder_text参数配置默认文本,在渲染完HTML后初始化Chosen时,根据当前语言设置对应值:
// 假设已将生成的row追加到页面表格中 var placeholderText = MYLang.ReturnLang() == "ar-KW" ? "اختر منفذ" : "Select an Option"; $('.chosen-select').chosen({ placeholder_text: placeholderText, // 其他Chosen配置参数(如width等)可按需添加 });
方法二:直接修改已生成的Chosen元素文本
若Chosen已完成初始化,可直接定位到对应的span元素修改内容:
var placeholderText = MYLang.ReturnLang() == "ar-KW" ? "اختر منفذ" : "Select an Option"; // 遍历所有Chosen选择器的默认显示span $('.chosen-container .chosen-single span').text(placeholderText);
注意事项
- 方法二需确保在Chosen初始化完成后执行,否则可能无法找到目标元素。
- 方法一更符合插件原生逻辑,避免直接操作插件生成的DOM结构,降低版本兼容风险。
内容的提问来源于stack exchange,提问作者ahmed salah abd elaziz elbarba
相关产品推荐
相关产品推荐

