我创建了一个客户c#DropDownList控件,它可以呈现出来的内容是optgroups(不是从头开始,我编辑了一些在互联网上找到的代码,虽然我确实理解它正在做什么),但它工作正常.
但是,我现在遇到的情况是我需要在下拉列表中有两个级别的缩进,即
<select>
<optgroup label="Level One">
<option> A.1 </option>
<optgroup label="Level Two">
<option> A.B.1 </option>
</optgroup>
<option> A.2 </option>
</optgroup>
</select>Run Code Online (Sandbox Code Playgroud)
但是,在上面的示例代码段中,它呈现为好像Level Two与缩进量相同Level One.
有没有办法生成我正在寻找的嵌套optgroup行为?
只是试图通过嵌套深度来缩进optgroup块,我已经尝试了一般margin-left规则,嵌套元素然后尝试应用相同的规则,尝试过padding-left......这样的缩进是可能的吗?看起来很简单:P
在下面的示例中,标记为"client2_a"的optgroup应缩进比其他标记更多,因为它嵌套在"client2"中.
我正在尝试基于此解决方案创建一个html层次结构选择并使用knockout
然而,knockout编码我返回的字符串值.
如何解码从函数返回的文本?
jsFiddle例子
HTML:
<select data-bind="options: items, optionsText: getOptionText"></select>
Run Code Online (Sandbox Code Playgroud)
使用Javascript:
var viewModel = {
items: ko.observableArray([
{ Text: "Item 1", level: 1 },
{ Text: "Item 2", level: 2 },
{ Text: "Item 3", level: 3 },
{ Text: "Item 4", level: 4 }
]),
getOptionText: function(data) {
var value = "";
for (var i = 1; i <= (data.level - 1) * 2; i++) {
value += " ";
}
value += data.Text;
return value; …Run Code Online (Sandbox Code Playgroud) 如果您的目标只是针对Firefox,Opera和Chrome,而不是IE,并且您只针对现代浏览器(过去一年发布),那么在选择中创建多级缩进选项的最佳方法是什么使用optgroups?也就是说,当您希望父选项仍然可以选择时,以及孩子们?
<select>
<option>
<option>
<option>
<option>
<option>
<option>
<option>
<option>
<option>
<option>
<option>
<option>
<option>
<option>
<option>
</select>
Run Code Online (Sandbox Code Playgroud)
虽然我不知道它是否真的可能,但最好是在选项级别之间有实际的父/子关系,但如果不是,至少有一种方法可以使它看起来像那样,用户 - 三种浏览器之间的体验相似吗?
html ×4
css ×2
optgroup ×2
indentation ×1
javascript ×1
jquery ×1
knockout.js ×1
parent-child ×1
select ×1