Мне нужно сделать кроссбраузерные теги в jQuery. Поэтому вместо создания чистых HTML-тегов элемента SELECT я использую вложенные элементы. На странице будет доступно много полей выбора, поэтому они должны корректно работать друг с другом.
Изменить: следует использовать эффекты затухания "fadeIn() / fadeOut()" вместо "hide() / show()"
Представляем пример:
Вместо классического чистого HTML-элемента выпадающего списка:
<select>
<option>Option 1</option>
<option>Option 1</option>
<option>Option 1</option>
</select>
У меня есть вложенные элементы, поэтому я могу правильно их стилизовать:
<div class="gui-selectbox">
<a class="gui-selectbox-button">
<span class="gui-btn-l"></span>
<span class="gui-btn-c">Option 1</span>
<span class="gui-btn-r"></span>
</a>
<div class="gui-selectbox-dialog">
<ul>
<li>Option 1</li>
<li>Option 2</li>
<li>Option 3</li>
<ul>
</div>
</div>
Вот код: http://jsfiddle.net/aspirinemaga/XR4Y3/ а>
Это должно работать таким образом:
- Когда я нажимаю на любой элемент, он должен закрыть все поля выбора
- Когда я нажимаю «.gui-selectbox-button», он должен отображать «.gui-selectbox-dialog» своего родителя «.gui-selectbox».
- Если пользователь щелкает за пределами «.gui-selectbox-button» и «.gui-selectbox-dialog», он должен закрыть все открытые поля выбора.
ОБНОВЛЕНО:
Как я могу указать функции не закрывать родительский div, если текущая цель является его дочерним элементом?
Вот пример: http://jsfiddle.net/aspirinemaga/ejyRR/5/. Это третий элемент.
href="selectbox-button"
должно бытьclass="selectbox-button"
? - person Jeff Wilbert   schedule 06.01.2012