2009-01-13 33 views
0

这不像人们想象的那么直截了当。我使用的插件叫jQuery MultiSelect和多<选择使用XSLT>选项如下:使用jQuery + Multi选择<select>

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

这让我申请多选();功能给每一个<选择>在页面上。

行为很奇怪,其他所有< select>正在改为下拉列表(无论如何都是这样)。我在JavaScript中看不到任何错误,导致此问题,因为它会遍历每一个问题。为了更清楚地说明,只有那些应用了JavaScript的列表是位置2,4,6和8中的列表(位于页面上的9个列表中)。

任何想法?

回答

4

我以前没听过'万圣节问题'标签,但罗伯特可能是正确的。
从getElementsByTagName返回的节点列表是动态的,即添加或删除(在本例中为选择)将在创建节点列表后更改节点列表。

尝试

//hoping for magic here 
$('select').multiSelect(); 

$('select').each(function() { 
    $(this).multiSelect(); 
}); 
+0

你这该死的。我一直在努力几个小时,而且你做得这么简单! :) – Kezzer 2009-01-13 10:57:44

0

试试这个:

jQuery('select').each(function(){selectAll(this.id)});