Я хочу создать раскрывающийся список сгруппированными элементами. Это для HTML-формы поиска базы данных, с которой я работаю. Есть ли способ, чтобы я мог выбрать название группы, что привело к выбору всех элементов в этой конкретной группе? Например, если название группы - «Немецкие автомобили», а также предметы «Мерседес» и «Ауди», нажав «Немецкие автомобили», следует выбрать как немецкие автомобильные компании.optgroup select title of group
ответ
Если вы дадите свои группы opt-groups классу, вы можете выбрать класс, а затем получить доступ к своим детям.
$('.german-cars').children();
Если это недоступно, альтернатива немного медленная. Когда вы просматриваете все группы optgroups и сравниваете их текст по отдельности, возьмите их в руки.
Редактировать: Установить селектор. И -разработка:
Затем, чтобы выбрать их по щелчку вы будете использовать:
$('.german-cars').click(function(e) {
e.preventDefault();
$(this).children().attr('selected', 'selected');
});
Предполагая, что элемент установлен на множественный выбор. В противном случае будет выбран только последний автомобиль в списке.
EDIT 2
Fiddle: http://jsfiddle.net/mbChZ/25/
Эти изменения должны работать так, как вы ищете.
$(function() {
$('select optgroup').mousedown(function(e) {
e.preventDefault();
if ($(this).children(':selected').length == $(this).children().length) {
$(this).children().attr('selected', null);
} else {
$(this).children().attr('selected', 'selected');
}
});
$('select option').mousedown(function(e) {
e.stopPropagation();
e.preventDefault();
$(this).attr('selected', ($(this).is(':selected'))? null : 'selected');
});
});
Я изменил событие MouseDown, чтобы мы могли видеть состояние элементов до того, как браузер уже обработал MouseDown события. Это позволяет нам проверять, все ли они выбраны, и если так отменить выбор, а не выбирать. И то же самое должно было быть сделано для события click для option
, чтобы предотвратить распространение этого события.
Я не уверен на 100% совместимости браузера с этим, хотя вы можете убедиться, что он работает в более старых IE, если вы их поддерживаете.
Не в любом надежном виде. optgroup
предназначен только для группировки, а не для функциональности. Но вы можете использовать набор флажков вместо элементов select
, а затем у вас может быть флажок для «немецких автомобилей» и, например, с отступом под ним, флажки для разных моделей немецких автомобилей.
Тогда вы можете иметь дело с этим различными способами. Вы можете просто справиться с ситуацией на стороне сервера, чтобы, если «немецкие автомобили» были проверены, обработчик формы действует так, как если бы каждый флажок для немецкого автомобиля был выбран. Или вы также можете иметь обработчик на стороне клиента для флажка «Немецкие автомобили», чтобы его проверка проверяла отдельные флажки (но следует ли их снять галочку при снятии флажка)?
- 1. Livevalidation and group of checkbox, radio, select
- 2. Multi select внутри optgroup - цель события - optgroup
- 3. title of dhtmlxTabbar tab
- 4. select group with multiselect
- 5. Преобразование HTML select/optgroup в Flex
- 6. Population Select List, включая OptGroup
- 7. Как отключить select optgroup (groupbox)?
- 8. Загрузить динамические элементы optgroup в html select
- 9. bootstrap-select, center title
- 10. center title of menu wpf
- 11. DialogPreference set title of Dialog
- 12. Bind input select to group of checkboxes jquery
- 13. Select2 optgroup внутри optgroup
- 14. GROUP BY select in SELECT
- 15. MySQL SELECT GROUP BY
- 16. Почему css "reset" уничтожает select optgroup?
- 17. jQuery group of checkbox issue
- 18. WCF get Group of user
- 19. jenkins group of jobs configuration
- 20. GROUP BY и SELECT в SELECT
- 21. SQL SELECT, GROUP BY
- 22. SELECT ... GROUP BY
- 23. SQL Group Select Query
- 24. SQL select/group
- 25. MYSQL SELECT BY GROUP
- 26. select min on group
- 27. MySQL SELECT COUNT GROUP
- 28. SQL SELECT и GROUP
- 29. MySQL GROUP BY и SELECT, GROUP BY
- 30. TV output url title of resource id
К сожалению, это не работает. Пожалуйста, обратитесь к моему коду ниже: JAVASCRIPT: –
HTML: <метка стиль = "вертикальное выравнивание: сверху"> Выберите Car Company: <выбрать несколько = "несколько" размер = "10" ID = 'секцию'> –
Хм, только что протестированный, кажется, работает нормально: http://jsfiddle.net/mbChZ/3/ Просто заметили, что нажатие на опции запускает событие щелчка optgroup. Таким образом, вам нужно также поместить обработчик кликов на них и прекратить распространение после настройки состояния самостоятельно. Обновленная скрипка: http://jsfiddle.net/mbChZ/6/ – dennmat