Pregunta

Esto no es tan sencillo como se podría pensar. Estoy usando un complemento llamado jQuery MultiSelect y multiple < ; seleccione > opciones usando XSLT de la siguiente manera:

<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>

El JavaScript que lo acompaña es el siguiente:

var selects = document.getElementsByTagName("select");

$.each(selects, function() {
  $(this).multiSelect();
});

Esto me permite aplicar multiSelect (); función para cada < select > en la página.

El comportamiento es bastante extraño, todos los demás < select > se está cambiando a la lista desplegable (todos los pares de todos modos). No puedo ver nada malo en mi JavaScript para causar este problema, ya que iteraría sobre cada uno. Para que quede más claro, las únicas listas que tienen aplicado JavaScript son las que están en las posiciones 2, 4, 6 y 8 (de las 9 que están en la página).

¿Alguna idea?

¿Fue útil?

Solución

No había escuchado la etiqueta 'Problema de Halloween' antes, pero Robert puede estar en lo correcto.
La lista de nodos devuelta por getElementsByTagName es dinámica, es decir, agregar o eliminar, en este caso selecciona, cambiará la lista de nodos después de que se haya creado.

prueba

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

o

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

Otros consejos

Suena como un problema de Halloween ( http: // blogs .msdn.com / mikechampion / archive / 2006/07/20 / 672208.aspx ) en multiSelect, pero como no conozco multiSelect, no puedo decirlo con seguridad.

Prueba esto:

jQuery('select').each(function(){selectAll(this.id)});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top