使用jQuery将多级UL转换为带optgroup的selectbox
Convert multi-level UL to selectbox with optgroups using jQuery
我需要使用一个多级ul并创建一个带有optgroups的选择框。我想用jQuery来做这件事。optgroup标签将是任何孩子的父母。
我的标记:
<ul>
<li><a href="#">Section 1</a> </li>
<li><a href="#">Section 2</a>
<ul>
<li><a href="#">Section 2.1</a></li>
<li><a href="#">Section 2.2</a></li>
<li><a href="#">Section 2.3</a> </li>
</ul>
</li>
<li><a href="#">Section 3</a></li>
</ul>
我需要什么:
<select>
<option value="#">Section 1</option>
<optgroup label="Section 2">
<option value="#">Section 2.1</option>
<option value="#">Section 2.3</option>
<option value="#">Section 2.3</option>
</optgroup>
<option value="#">Section 3</option>
</select>
到目前为止,我可以创建一个选择框,但它只考虑一个级别:http://jsfiddle.net/RyanBrackett/0wp0ypng/
感谢的帮助
// Create the dropdown base
$("<select />").appendTo(".mob-subpages");
var opt = "";
$(".wrapper").children('li').each(function(){
if($(this).find('ul').length !== 0){
opt += "<optgroup label="+"'"+$(this).children().html()+"'"+">";
$(this).find('li').each(function(){
opt += "<option>"+$(this).find('a').html()+"</option>";
});
opt += "</optgroup>";
}else{
opt += "<option>"+$(this).children().html()+"</option>";
}
console.log($(this).find('ul').length !== 0)
});
console.log(opt)
$(".mob-subpages select").append(opt)
更新的fiddle
此代码运行良好!!
检查并确认
相关文章:
- 下拉框,带有展开的optgroup
- 如何将CSS(特别是填充/边距)应用于select下拉菜单的选项或optgroup
- 单击OPTGROUP后选择所有子元素
- 如何使用jquery将所选项目从一个下拉组列表(optgroup)移动到另一个下拉列表(optgroup)
- 将从控制器返回的selectbox值动态呈现为json
- Selectbox选项在页面刷新jsp后保持选中状态
- 使用JavaScript在select字段中使用optgroup设置html选项值
- 需要Jquery selectbox强标记帮助
- 如何使用JavaScript或jQuery获取数组中选定的optgroup和选项
- 如何使用Spring MVC将Java Map放入Optgroup选项中
- 如何从Javascript中获取optgroup值
- ng使用angular中的json数据使用optgroup重复select
- 将JQuery SelectBox的值设置为模型中的变量
- 取消绑定/绑定单击jquery selectbox插件
- 将selectbox值保持为从数据库中选择的值
- jQuery巨大的selectbox导致Uncaught RangeError:超过了最大调用堆栈大小
- 检测SelectBox选择的更安全方法
- angular dons't从复杂对象中选择selectbox选项
- 有没有任何方法可以用javascript将optgroup标签添加到依赖的dropdownlist
- 使用jQuery将多级UL转换为带optgroup的selectbox