我正在通过脚本(Smarty)动态生成下拉列表。
如果下拉菜单只有一个选项值,是否可以将其显示为标签。
这将显示一个包含 3 个值的下拉列表。
<select>
<option> 1 </option>
<option> 2 </option>
<option> 3 </option>
</select>
如果它只显示一个值然后将其显示为标签,是否可以使用纯 HTML 或 Jquery 或两者的组合?我可以使用 smarty 来检查值并抛出不同的 html,但这会使我的代码只要我有很多下拉菜单。
<select>
<option> 1 </option>
</select>
任何简单的逻辑,我可能会遗漏吗?
更新(已解决)
感谢所有帮助的stackoverflow'ers。我使用了@ahren 提供的代码,它按要求工作。
但是我已经扩展了代码以将一个标签的属性复制到另一个标签,以防有人正在寻找
// To replace a <select>, with <label> tag if it has just one value
$('select').each(function(){
if($(this).find('option').length === 1){
// Copy all attributes from a given tag and save it in a variable.
var attributes_from = $(this).prop("attributes");
var attributes_to = '';
$.each(attributes_from, function() {
attributes_to += ' '+this.name+'="'+this.value+'"';
});
// If select then copy its value from option.
attributes_to += ' value="'+$(this).find('option').attr('value')+'"';
// Replace the <tag>
$(this).replaceWith(function(){
return $('<label '+attributes_to+' />').html($(this).text());
});
}
});