Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以通过css使选择下拉列表的选项显示为optgroup_Javascript_Jquery_Css_Xml_Optgroup - Fatal编程技术网

Javascript 是否可以通过css使选择下拉列表的选项显示为optgroup

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>&

实际上,我正在从xml填充下拉列表中的选项,现在添加一个optgroup来选择是一个挑战。我可以手动添加它们并通过css更改行为吗?

您可以在使用jQuery之后手动将选项和optgroup添加到选择框中。假设您的HTML已经可用,您可以执行以下操作:

$("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);
            }
        });
}