我有10个下拉列表(Drupal 7中的视图暴露过滤器,启用了AJAX模式)并且需要添加额外的类" test"如果已选择默认选项,则为每个列表。并删除课程" test"从未选择默认选项的列表中。我有:
$('.selDiv option:eq(0)').prop('selected', true).jQuery("select").addClass("test");
它增加了"测试"类到所有下拉列表。但是如果您在任何列表中选择了任何非默认值,那么"测试"所有列表的类(即使选择了默认选项)都消失了,直到页面重新加载才会再次出现。
答案 0 :(得分:1)
要实现此目的,您只需要向change
元素添加select
事件处理程序,以检查所选option
的索引,然后添加或删除test
根据需要分类:
$('.selDiv option:eq(0)').prop('selected', true)
$("select").addClass("test").on('change', function() {
var optionIndex = $(this).find('option:selected').index();
$(this).toggleClass('test', optionIndex == 0);
});

.test {
border: 1px solid #C00;
outline: 0;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="selDiv">
<option>Please select</option>
<option>Foo</option>
<option>Bar</option>
</select>
<select class="selDiv">
<option>Please select</option>
<option>Foo</option>
<option>Bar</option>
</select>
&#13;