Итерация по <select>с использованием jQuery + Multi Select - PullRequest
0 голосов
/ 13 января 2009

Это не так просто, как можно подумать. Я использую плагин под названием jQuery MultiSelect и несколько вариантов

<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 (); функция для каждого

Поведение довольно странное, все остальные

Есть идеи?

Ответы [ 3 ]

4 голосов
/ 13 января 2009

Раньше я не слышал тега «проблема Хэллоуина», но Роберт может быть прав.
Список узлов, возвращаемый из getElementsByTagName, является динамическим, то есть добавление или удаление, в этом случае выбирает, изменит список узлов после того, как он был создан.

попробовать

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

или

$('select').each( function() {
    $(this).multiSelect();
});
2 голосов
/ 13 января 2009

Звучит как проблема Хэллоуина (http://blogs.msdn.com/mikechampion/archive/2006/07/20/672208.aspx) в multiSelect, но так как я не знаю multiSelect, точно сказать не могу.

0 голосов
/ 13 апреля 2010

Попробуйте это:

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