Я стремился использовать Stylish Select Box
с элементами, созданными после загрузки страницы без успеха.Чтобы понять проблему, вам нужно сначала воспроизвести ее.Я знаю, что следующее может показаться немного раздражающим, но, пожалуйста, продолжайте читать, если у вас есть 5 минут свободного времени.
В качестве альтернативы, вы можете получить законченный пример здесь , чтобы увидетьвыдайте напрямую.
Для начала вам понадобится элемент <select>
.Теперь свяжите jquery.stylish-select.js
с вашим элементом <select>
, используя что-то вроде $('select').sSelect();
, после этого скрипт скрывает элемент <select>
и создает под ним набор DIV.Теперь ваша страница должна выглядеть следующим образом:
<select style="display:none;">
<option>1</option>
<option>2</option>
</select>
<div class=newListSelected>
<!-- Some other stuff(not important). -->
</div>
Теперь добавьте еще один элемент <select>
на той же странице с чем-то вроде $('body').append('<select><option>1</option><option>2</option></select>')
и используйте $(.newListSelected).remove();
для удаления DIV, которые он создал для предыдущей опции `,Надеюсь, я достаточно ясен.
После этого у вас должно появиться следующее на странице:
<select style="display:none;">
<option>1</option>
<option>2</option>
</select>
<select>
<option>1</option>
<option>2</option>
</select>
Наконец, просто позвоните $('select').sSelect();
еще раз.Он должен создавать DIV под обоими ваших <select>
элементов.Теперь вот проблема, поле выбора first , представленное DIV, не работает должным образом.
В качестве альтернативы, вы можете получить законченный пример здесь , чтобысмотрите проблему напрямую.
Обычно , когда вы выбираете опцию из поля выбора, представленного DIV, она должна обновить исходное <select>
элемента selectedIndex
(свойство DOM) к соответствующему индексу выбранного варианта (0 для первого варианта, 1 для второго ... и т. д.).Но если вы присмотритесь, вы увидите, что для любой опции значение selectedIndex
меняется на -1.
Поскольку я действительно новичок в Javascript, я действительно не представляю, почему он так себя ведет.То, о чем я только мог подумать, было связано с тем, что первый элемент был дважды связан с $('select').sSelect;
, что вызывало проблемы с DOM.