У меня есть список выбора с опцией 1500+:
<select multiselect="multiselect" class="cssClass">
<option value="ID1">Text</option>
<option value="ID2">Text</option>
<option value="ID3">Text</option>
<option value="ID4">Text</option>
<option value="ID">Text</option>
.
.
</select>
При нажатии на опцию я хочу переключить класс ItemSelected
для выбранной опции, и для этого я не хочу перебирать все опции, так как это большой список номеров.
ПРИМЕЧАНИЕ
Здесь я разрешаю выбрать несколько вариантов. Как можно было получить только выбранную опцию и переключить класс только для этой опции?
3 ответа
Вам не нужно зацикливаться на всем. Просто используйте следующее eventHandler
:
$(".cssClass option").click(function () {
$(this).toggleClass("ItemSelected");
});
Здесь вы можете увидеть рабочий фрагмент:
$(function () {
$(".cssClass option").click(function () {
$(this).toggleClass("ItemSelected");
});
});
.cssClass {width: 100px;}
.cssClass option {padding: 5px;}
.cssClass .ItemSelected {background: #99f;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select multiselect="multiselect" class="cssClass" size="5">
<option value="ID1">Text</option>
<option value="ID2">Text</option>
<option value="ID3">Text</option>
<option value="ID4">Text</option>
<option value="ID5">Text</option>
</select>
Поскольку он фокусируется, вы также можете blur()
после выбора:
$(function () {
$(".cssClass option").click(function () {
$(this).toggleClass("ItemSelected");
$(".cssClass").blur();
});
});
.cssClass {width: 100px;}
.cssClass option {padding: 5px;}
.cssClass .ItemSelected {background: #99f;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select multiselect="multiselect" class="cssClass" size="5">
<option value="ID1">Text</option>
<option value="ID2">Text</option>
<option value="ID3">Text</option>
<option value="ID4">Text</option>
<option value="ID5">Text</option>
</select>
Или отмените выбор:
$(function () {
$(".cssClass option").click(function () {
$(this).toggleClass("ItemSelected");
$(".cssClass").val("-1");
});
});
.cssClass {width: 100px;}
.cssClass option {padding: 5px;}
.cssClass .ItemSelected {background: #99f;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select multiselect="multiselect" class="cssClass" size="5">
<option value="ID1">Text</option>
<option value="ID2">Text</option>
<option value="ID3">Text</option>
<option value="ID4">Text</option>
<option value="ID5">Text</option>
</select>
Вот один из способов сделать это.
В этом примере он добавляет жирный шрифт к классу ItemSelected, чтобы визуально было видно, что класс добавляется и удаляется.
$(document).on("change", ".cssClass", function(){
$(this).find("option").removeClass("ItemSelected");
$(this).find("option:selected").addClass("ItemSelected");
})
.ItemSelected {
font-weight: 600;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select multiple="multiple" class="cssClass">
<option value="ID1">Text</option>
<option value="ID2">Text</option>
<option value="ID3">Text</option>
<option value="ID4">Text</option>
<option value="ID">Text</option>
</select>
Я немного скорректировал HTML, теперь у выбора есть идентификатор.
<div class="parent" style="width:100px; overflow:hidden;">
<select id="demo" multiselect="multiselect" class="cssClass">
<option value="ID1">Text 1</option>
<option value="ID2">Text 2</option>
<option value="ID3">Text 3</option>
<option value="ID4">Text 4</option>
</select>
</div>
Использование следующего jQuery должно решить вашу проблему:
$("#demo").change (function() {
$("#demo option:selected").toggleClass("ItemSelected");
});
Похожие вопросы
Новые вопросы
jquery
jQuery — это библиотека JavaScript. Также рассмотрите возможность добавления тега JavaScript. jQuery — это популярная кросс-браузерная библиотека JavaScript, которая упрощает обход объектной модели документа (DOM), обработку событий, анимацию и взаимодействие AJAX, сводя к минимуму расхождения между браузерами. Вопрос с тегом jQuery должен быть связан с jQuery, поэтому jQuery должен использоваться рассматриваемым кодом, и в вопросе должны быть как минимум элементы, связанные с использованием jQuery.