XUL Richlistbox选择问题
问题描述:
我有一个richlistbox我的Firefox扩展如下:XUL Richlistbox选择问题
<richlistbox id="accList" class="accList" seltype="single" flex="1">
<richlistitem id ="accListTemplate" hidden="true">
<listcell class="sessionActivate"/>
<listcell class="nameItem"/>
<listcell class="lastUsedItem"/>
<spacer flex="1" />
<listcell class="sessionDelete" />
<listcell class="sessionComplete" />
<listcell class="sessionDetails" />
</richlistitem>
</richlistbox>
通过JavaScript我克隆此richlistitem并将其添加到与我想要的值richlistbox。
结果是:
的项目似乎都被选中,我无法改变的选择。
另一个奇怪的是,如果我上线点击做到:
alert(document.getElementById("accList").selectedCount);
它说0
我失去了一些东西?
答
隐藏与否,列表自动选择第一个项目 - 当你克隆它,你会得到它的“选择”的状态为好。最简单的解决方案:只是不要把你的模板放在<richlistbox>
标签内,把它放在外面的某个地方。
答
由于您克隆列表中的第一个项目的方式,您会从该项目中获得一些您并不期待的额外属性。像这样的列表中的第一项继承这些属性。
在您的克隆代码中,删除属性selected
和current
,然后再将其添加到列表中。
例子:
var newtemplate = document.getElementById("accListTemplate").cloneNode(true);
newtemplate.removeAttribute("hidden");
newtemplate.removeAttribute("id");
newtemplate.removeAttribute("current");
newtemplate.removeAttribute("selected");
// do your content manipulation
document.getElementById("accList").appendChild(newtemplate);
+0
感谢您的回答。这很好,但我最终使用弗拉基米尔在其他答案上写的方式。 – 2013-05-15 08:20:02
谢谢。这很好。 – 2013-05-15 08:14:50