2009-01-13 31 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)});