Повторение <select> Использование jQuery + Множественный выбор
-
22-07-2019 - |
Вопрос
Это не совсем так прямолинейно, как можно подумать.Я использую плагин под названием Множественный выбор jQuery и несколько <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();функция для каждого отдельного элемента <select> на странице.
Поведение довольно странное, все остальные <select> изменяются в выпадающем списке (в любом случае, все четные).Я не вижу ничего плохого в моем JavaScript, что могло бы вызвать эту проблему, поскольку она повторяла бы каждую из них.Чтобы было более понятно, единственными списками, к которым применен этот JavaScript, являются списки в позициях 2, 4, 6 и 8 (из 9, которые есть на странице).
Есть какие-нибудь идеи?
Решение
Я раньше не слышал ярлыка "Проблема Хэллоуина", но Роберт, возможно, прав.
Список узлов, возвращаемый из getElementsByTagName , является динамическим, т. е.добавление или удаление, в данном случае selects, изменит список узлов после его создания.
попробуй
//hoping for magic here
$('select').multiSelect();
или
$('select').each( function() {
$(this).multiSelect();
});
Другие советы
Похоже на проблему Хэллоуина ( http: // blogs .msdn.com / mikechampion / archive / 2006/07/20 / 672208.aspx ) в multiSelect, но так как я не знаю multiSelect, сказать точно не могу.
Попробуйте это:
jQuery('select').each(function(){selectAll(this.id)});