这并不像人们想象的那么直截了当。我正在使用名为jQuery MultiSelect的插件和多个< select>使用XSLT的选项如下:
<xsl:for-each select="RootField">
<select id="{RootField}" multiple="multiple" size="3">
<option value=""></option>
<xsl:for-each select="ChildField">
<option value="{ChildField}"><xsl:value-of select="ChildField"/></option>
</xsl:for-each>
</select>
</xsl:for-each>
随附的JavaScript如下:
var selects = document.getElementsByTagName("select");
$.each(selects, function() {
$(this).multiSelect();
});
这允许我应用multiSelect();功能到每一个&lt; select&gt;在页面上。
行为很奇怪,其他所有&lt; select&gt;正在被改为下拉列表(无论如何都是偶数)。我在JavaScript中看不到任何错误导致这个问题,因为它会迭代每一个问题。为了更清楚,只有那些应用了JavaScript的列表是位置2,4,6和8(页面中的9个)中的列表。
有什么想法吗?
答案 0 :(得分:4)
之前我没有听过“万圣节问题”标签,但罗伯特可能是正确的 从getElementsByTagName返回的节点列表是动态的,即添加或删除(在本例中为选择)将在创建节点列表后更改它。
试
//hoping for magic here
$('select').multiSelect();
或
$('select').each( function() {
$(this).multiSelect();
});
答案 1 :(得分:2)
在multiSelect中听起来像万圣节问题(http://blogs.msdn.com/mikechampion/archive/2006/07/20/672208.aspx),但由于我不知道multiSelect,我无法肯定地说。
答案 2 :(得分:0)
试试这个:
jQuery('select').each(function(){selectAll(this.id)});