Javascript 是否可以通过css使选择下拉列表的选项显示为optgroup
实际上,我正在从xml填充下拉列表中的选项,现在添加一个optgroup来选择是一个挑战。我可以手动添加它们并通过css更改行为吗?您可以在使用jQuery之后手动将选项和optgroup添加到选择框中。假设您的HTML已经可用,您可以执行以下操作:Javascript 是否可以通过css使选择下拉列表的选项显示为optgroup,javascript,jquery,css,xml,optgroup,Javascript,Jquery,Css,Xml,Optgroup,实际上,我正在从xml填充下拉列表中的选项,现在添加一个optgroup来选择是一个挑战。我可以手动添加它们并通过css更改行为吗?您可以在使用jQuery之后手动将选项和optgroup添加到选择框中。假设您的HTML已经可用,您可以执行以下操作: $("select").append("<optgroup label='Example'><option>Test1 </option> <option>Test 2</option>&
$("select").append("<optgroup label='Example'><option>Test1 </option> <option>Test 2</option></optgroup>")
如果select元素中已经有选项,那么只需找到所有您希望通过类名或值属性分组的选项,然后将它们推送到新创建的optgroup中,然后将optgroup追加到select元素中。例如:
var optionsToGroup = $("option.groupthis");
var optGroup = $("<optgroup></optgroup>").append(optionsToGroup);
$('select').append(optGroup);
编辑:根据您提供的Fiddle,我修改了jQuery代码以在选项之前构建optgroup。这不是最有效的方法,但它应该让你开始基于你所提供的。看
编辑2:我修改了JSFIDLE以使用与您提供的类似的实际XML文档。请看这里:
或者,相关修改代码如下:
function createSelect(xml)
{
var select = $('#mySelect');
$(xml).find('menuitem').each(function(){
var title = $(this).find('title').text();
var optgrouping = "<optgroup label='"+title+"'></optgroup>";
var options = [];
$(this).find('value').each(function(){
var value = $(this).text();
options.push("<option class='ddindent' value='"+ value +"'>"+value+"</option>");
});
var group = $(optgroupting).html(options.join(''));
select.append(group);
});
select.children(":first").text("please make a selection").prop("selected",true);
}
});
}
JavaScript是用于行为的;你能更清楚地解释你想要什么,记住没有人真正知道你在做什么吗?代码示例还是可能?听起来你真的需要一个原始问题的解决方案,而不是CSS/JS黑客来解决它。@WesleyMurch:我在这里设置了一个fiddle:实际上我不知道如何在fiddle上设置xml,所以它在fiddle上不起作用,但在我的本地机器上起作用。我希望下拉列表也有optgroup标记。我是否需要更改xml,或者您是否建议将其放在本地html中,我最理想的情况是将其放在xml中。感谢您提供帮助您可以参考此提琴和帮助吗:我的选项来自xml,而不是像您所说的那样来自手册:我已经修复了提琴,以便它能够实际使用您提供的xml。让我知道这是否是你想要的。
function createSelect(xml)
{
var select = $('#mySelect');
$(xml).find('menuitem').each(function(){
var title = $(this).find('title').text();
var optgrouping = "<optgroup label='"+title+"'></optgroup>";
var options = [];
$(this).find('value').each(function(){
var value = $(this).text();
options.push("<option class='ddindent' value='"+ value +"'>"+value+"</option>");
});
var group = $(optgroupting).html(options.join(''));
select.append(group);
});
select.children(":first").text("please make a selection").prop("selected",true);
}
});
}